From aa9a2230e5a375a8617efd3e0a4090f42f6d6f13 Mon Sep 17 00:00:00 2001
From: evanlowe <62918515+evanlowe@users.noreply.github.com>
Date: Sat, 19 Sep 2026 21:51:27 +0800
Subject: [PATCH] feat(studio): refine component library organization and
interactions
---
frontend/README.md | 15 +-
frontend/SPEC.md | 9 +-
.../components-preview/ComponentsPreview.tsx | 235 ++++----
.../components-preview/PreviewContents.tsx | 86 +++
frontend/src/components-preview/README.md | 37 +-
.../components-preview/api/ComponentApi.tsx | 16 +-
.../components-preview/components-preview.css | 138 ++++-
.../examples/AgentNodePreview.tsx | 9 +-
.../examples/AppLayoutPreview.tsx | 5 +-
.../examples/BasicNodePreview.tsx | 7 +-
.../examples/ButtonPreview.css | 15 +-
.../examples/ButtonPreview.tsx | 114 ++--
.../examples/ButtonsPreview.tsx | 2 -
.../examples/CanvasBackgroundPreview.tsx | 9 +-
.../examples/CardLayoutPreview.tsx | 4 +-
.../examples/CardsPreview.tsx | 2 -
.../examples/CheckboxPreview.tsx | 4 +-
.../examples/CodeBlockPreview.tsx | 4 +-
.../examples/ConversationFlowPreview.css | 2 +-
.../examples/ConversationFlowPreview.tsx | 20 +-
.../examples/DashedZonePreview.tsx | 7 +-
.../examples/DatePickerPreview.tsx | 14 +-
.../examples/DetailPageLayoutPreview.tsx | 4 +-
.../examples/DividerPreview.tsx | 4 +-
.../examples/DrawerPreview.tsx | 5 +-
.../examples/DropdownPreview.tsx | 4 +-
.../examples/EmptyStatePreview.tsx | 10 +-
.../examples/ErrorStatePreview.tsx | 5 +-
.../examples/FileExplorerPreview.tsx | 10 +-
.../examples/FileUploadPreview.tsx | 12 +-
.../examples/FilterTabsPreview.tsx | 4 +-
.../examples/FormFieldPreview.tsx | 9 +-
.../examples/FormLabelPreview.tsx | 24 +-
.../examples/FormLabelRowPreview.tsx | 8 +
.../examples/GlassIconButtonGroupPreview.tsx | 4 +-
.../examples/GlassIconButtonPreview.tsx | 4 +-
.../examples/GlassTabsPreview.tsx | 8 +-
.../examples/HeaderPreview.css | 5 +
.../examples/HeaderPreview.tsx | 19 +-
.../examples/IndexLayoutPreview.tsx | 5 +-
.../examples/InfoCardPreview.tsx | 4 +-
.../examples/InputPreview.tsx | 9 +
.../examples/InputWithHeaderIconPreview.tsx | 5 +-
.../examples/InputWithTailIconPreview.tsx | 2 +-
.../examples/ItemPreview.tsx | 7 +-
.../examples/LabelPreview.tsx | 19 +-
.../examples/LoadMoreAreaPreview.tsx | 5 +-
.../examples/LoadingPreview.css | 8 +-
.../examples/LoadingPreview.tsx | 10 +-
.../examples/LongRunningStatePreview.css | 23 +-
.../examples/LongRunningStatePreview.tsx | 50 +-
.../examples/MenuPreview.tsx | 30 +-
.../examples/ModalButtonPreview.tsx | 5 +-
.../examples/ModalLayoutPreview.tsx | 4 +-
.../examples/PillTabsPreview.tsx | 8 +-
.../examples/PillTagPreview.tsx | 4 +-
.../examples/PromoCardPreview.tsx | 7 +-
.../examples/PromptInputPreview.tsx | 15 +-
.../examples/RadioPreview.tsx | 7 +-
.../examples/ResourceCardPreview.tsx | 7 +-
.../examples/ResourcePageLayoutPreview.css | 7 +-
.../examples/ResourcePageLayoutPreview.tsx | 10 +-
.../examples/ScrollAreaPreview.tsx | 12 +-
.../examples/SelectPreview.tsx | 6 +-
.../examples/SidebarPreview.tsx | 12 +-
.../examples/SliderPreview.tsx | 15 +-
.../examples/SwitchPreview.tsx | 4 +-
.../examples/TableHeaderControlsPreview.tsx | 2 +-
.../examples/TablePreview.tsx | 7 +-
.../examples/TextareaPreview.tsx | 4 +-
.../examples/ToastPreview.css | 2 +-
.../examples/ToastPreview.tsx | 13 +-
.../examples/TokensPreview.css | 2 +-
.../examples/TokensPreview.tsx | 7 +-
.../examples/UnderlineTabsPreview.tsx | 6 +-
.../foundation/Specification.md | 88 +++
.../foundation/SpecificationPreview.css | 23 +
.../foundation/SpecificationPreview.tsx | 42 ++
frontend/src/components-preview/navigation.ts | 27 +
.../ConversationFlow/ConversationBlocks.tsx | 9 +-
.../ConversationFlow/ConversationFlow.css | 44 +-
.../ConversationFlow/ConversationFlow.tsx | 7 +-
.../ConversationRichContent.css | 2 -
.../ConversationStepEntrance.tsx | 77 +++
.../ai-app/ConversationFlow/README.md | 2 +
.../composites/CodeBlock/CodeBlock.css | 11 -
.../composites/CodeBlock/CodeBlock.tsx | 10 +-
.../composites/FormLabelRow/FormLabelRow.css | 13 +-
.../composites/FormLabelRow/FormLabelRow.tsx | 9 +-
.../components/composites/Header/Header.css | 9 -
.../components/composites/Header/Header.tsx | 1 +
.../LongRunningState/LongRunningState.css | 264 ++-------
.../LongRunningState/LongRunningState.tsx | 252 ++-------
.../composites/LongRunningState/README.md | 51 +-
.../components/primitives/Button/Button.css | 110 ++--
.../components/primitives/Button/Button.tsx | 4 +-
.../primitives/DatePicker/DatePicker.css | 2 -
.../primitives/DatePicker/DatePicker.tsx | 2 +-
.../components/primitives/Loading/Loading.tsx | 15 +-
frontend/src/components/tokens/theme.css | 8 +-
frontend/src/components/tokens/tokens.ts | 8 +-
frontend/tests/conversationFlow.test.tsx | 60 +++
frontend/tests/longRunningState.test.tsx | 131 ++---
.../{index-BRhKl68A.js => index-CJviP90a.js} | 506 +++++++++---------
...BUUV54ep.js => CodeDiffEditor-s8hBhMMg.js} | 2 +-
...2DfS.js => FileExplorerEditor-CFdSh-rV.js} | 2 +-
...0u.js => MarkdownPromptEditor-CzsU5wfw.js} | 2 +-
....js => QuickAgentCreateDialog-DPeLFn25.js} | 2 +-
.../{arc-B_nCGVGZ.js => arc-DbRAgn4v.js} | 2 +-
...hannel-CtLIg3Cq.js => channel-CMu2nD1d.js} | 2 +-
...ex.es-CsLwbSjL.js => index.es-RLQOD81J.js} | 2 +-
...n-7JeyXssI.js => jspdf.es.min-Bfqi7g1m.js} | 6 +-
...{linear-Bd0gp8ms.js => linear-tbDTDhU7.js} | 2 +-
...{index-B-Mv2mK2.css => index-BD-gRaai.css} | 4 +-
...XW.js => abnfDiagram-N423BO3Z-BaiVCyla.js} | 2 +-
... architectureDiagram-T3A2C74G-CxqE4ID3.js} | 2 +-
...1.js => blockDiagram-VBNYF7ZC-VKFCsK0p.js} | 2 +-
...oA7z.js => c4Diagram-5PPSVZJV-B3f7URa9.js} | 2 +-
...D5yhknlg.js => chunk-2GRJ4B5K-C-Qd5HYM.js} | 2 +-
...CyccXa7d.js => chunk-2Q5K7J3B-Cuc5ie7-.js} | 2 +-
...CBgp1FHA.js => chunk-5RXB4S5H-DkAcAzhi.js} | 2 +-
...vUjcD3vu.js => chunk-5VM5RSS4-B3rPasDn.js} | 2 +-
...j9aiRH_7.js => chunk-6Q2QTUOP-BxvHVKr0.js} | 2 +-
...BTSZzrkC.js => chunk-GF5L2VYU-DxVoovyk.js} | 2 +-
...BB3xX8QT.js => chunk-JWPE2WC7-BZ3X4qaY.js} | 2 +-
...BMo0zsm5.js => chunk-KBJHAD2P-CjQn-4mK.js} | 2 +-
...CywjY4-3.js => chunk-RYQCIY6F-CGpD7Uj6.js} | 2 +-
...DhKwTljB.js => chunk-XXDRQBXY-sABBpUdy.js} | 2 +-
.../mermaid/classDiagram-JCYQIIEL-BUtjNsWs.js | 1 +
.../mermaid/classDiagram-JCYQIIEL-CYAXibHo.js | 1 -
.../classDiagram-v2-OCEON4UE-BUtjNsWs.js | 1 +
.../classDiagram-v2-OCEON4UE-CYAXibHo.js | 1 -
...l.js => cose-bilkent-JH36ORCC-CB1m4BoC.js} | 2 +-
...klTWXi.js => cynefin-OW5HDTMX-Ckz3rKt1.js} | 2 +-
...js => cynefinDiagram-MW4NZA55-B8TWbKqb.js} | 2 +-
...D4MZxk-p.js => dagre-VZM6K2ZE-jG98pt9I.js} | 2 +-
...yMfVa-.js => diagram-7IWD3JNH-DZ76pD-Q.js} | 2 +-
...7AagsF.js => diagram-B4RE2ZJO-rB1S1yfJ.js} | 2 +-
...hN9cTh.js => diagram-LBJQPF4R-CrDpozB-.js} | 2 +-
...6z702U.js => diagram-Q27KOJAE-UDl8YDCB.js} | 2 +-
...KVBGmh.js => diagram-UB23O5K3-Cn76qpdV.js} | 2 +-
...2N.js => ebnfDiagram-BXEA7PRR-18Vh_BWX.js} | 2 +-
...fDi4.js => erDiagram-JOGREHBK-Cy7w0v1h.js} | 2 +-
...Ip.js => flowDiagram-UKHOOZJN-DZkAHgmK.js} | 2 +-
...8.js => ganttDiagram-PKOTCBZU-COvFwH2O.js} | 2 +-
...s => gitGraphDiagram-DS77QQ5N-Bn7ckgBg.js} | 2 +-
...VQ.js => infoDiagram-6WML65LV-BGQQjDep.js} | 2 +-
...s => ishikawaDiagram-WSZJBQD7-DVDLfh5B.js} | 2 +-
...js => journeyDiagram-NVQOT4AX-C65sCAhe.js} | 2 +-
...=> kanban-definition-27J2QSJJ-BTbzJ_ZQ.js} | 2 +-
...e-BpZvGNH3.js => mermaid.core-DeGzkuWe.js} | 8 +-
...> mindmap-definition-FAOFIHXS-DUAns_22.js} | 2 +-
...ZXv.js => pegDiagram-VL7TDLO6-jG4c0tDl.js} | 2 +-
...w4N.js => pieDiagram-7S7Q4E2Y-CsT4L9vZ.js} | 2 +-
...s => quadrantDiagram-CIZ2JOQS-BTnoKIrq.js} | 2 +-
...s => railroadDiagram-AXF67PYL-B8dHCT_8.js} | 2 +-
...> requirementDiagram-LRYGKXZP-CJhYPk23.js} | 2 +-
....js => sankeyDiagram-W5VNT64P-DemPr4LT.js} | 2 +-
...s => sequenceDiagram-SI44F4Z6-s4R2WnG5.js} | 2 +-
...15.js => sizeCapture-X5ZJPWSS-CHGscOn5.js} | 2 +-
...h.js => stateDiagram-OKZ733FA-BiXkLbKS.js} | 2 +-
.../stateDiagram-v2-UEYNNEHI-CVc3nAiM.js | 1 +
.../stateDiagram-v2-UEYNNEHI-Cdnedrlb.js | 1 -
...hzwE.js => swimlanes-SLNWSIFB-29nR2vPa.js} | 4 +-
.../swimlanesDiagram-ULZ7WXOC-D6zY6Lub.js | 8 -
.../swimlanesDiagram-ULZ7WXOC-oPtzMUJA.js | 8 +
... timeline-definition-Z64GVDOM-b5AcyL5V.js} | 2 +-
...bu.js => vennDiagram-T6HMQDX7-K3fkHwPY.js} | 2 +-
...js => wardleyDiagram-T6FBY63Y-CU_6HeHe.js} | 2 +-
...js => xychartDiagram-ELKLHX3M-DyeSCJVl.js} | 2 +-
veadk/webui/index.html | 4 +-
171 files changed, 1674 insertions(+), 1505 deletions(-)
create mode 100644 frontend/src/components-preview/PreviewContents.tsx
create mode 100644 frontend/src/components-preview/examples/FormLabelRowPreview.tsx
create mode 100644 frontend/src/components-preview/examples/InputPreview.tsx
create mode 100644 frontend/src/components-preview/foundation/Specification.md
create mode 100644 frontend/src/components-preview/foundation/SpecificationPreview.css
create mode 100644 frontend/src/components-preview/foundation/SpecificationPreview.tsx
create mode 100644 frontend/src/components-preview/navigation.ts
create mode 100644 frontend/src/components/ai-app/ConversationFlow/ConversationStepEntrance.tsx
rename veadk/webui/assets/app/{index-BRhKl68A.js => index-CJviP90a.js} (82%)
rename veadk/webui/assets/chunks/{CodeDiffEditor-BUUV54ep.js => CodeDiffEditor-s8hBhMMg.js} (99%)
rename veadk/webui/assets/chunks/{FileExplorerEditor-alc62DfS.js => FileExplorerEditor-CFdSh-rV.js} (96%)
rename veadk/webui/assets/chunks/{MarkdownPromptEditor-BPvUcz0u.js => MarkdownPromptEditor-CzsU5wfw.js} (99%)
rename veadk/webui/assets/chunks/{QuickAgentCreateDialog-DXGVTm8f.js => QuickAgentCreateDialog-DPeLFn25.js} (97%)
rename veadk/webui/assets/chunks/{arc-B_nCGVGZ.js => arc-DbRAgn4v.js} (98%)
rename veadk/webui/assets/chunks/{channel-CtLIg3Cq.js => channel-CMu2nD1d.js} (53%)
rename veadk/webui/assets/chunks/{index.es-CsLwbSjL.js => index.es-RLQOD81J.js} (99%)
rename veadk/webui/assets/chunks/{jspdf.es.min-7JeyXssI.js => jspdf.es.min-Bfqi7g1m.js} (99%)
rename veadk/webui/assets/chunks/{linear-Bd0gp8ms.js => linear-tbDTDhU7.js} (98%)
rename veadk/webui/assets/styles/{index-B-Mv2mK2.css => index-BD-gRaai.css} (52%)
rename veadk/webui/assets/visualizations/mermaid/{abnfDiagram-N423BO3Z-Ckp_oCXW.js => abnfDiagram-N423BO3Z-BaiVCyla.js} (86%)
rename veadk/webui/assets/visualizations/mermaid/{architectureDiagram-T3A2C74G-5LJW4V8K.js => architectureDiagram-T3A2C74G-CxqE4ID3.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{blockDiagram-VBNYF7ZC-ATNReLr1.js => blockDiagram-VBNYF7ZC-VKFCsK0p.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{c4Diagram-5PPSVZJV-DtdQoA7z.js => c4Diagram-5PPSVZJV-B3f7URa9.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-2GRJ4B5K-D5yhknlg.js => chunk-2GRJ4B5K-C-Qd5HYM.js} (93%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-2Q5K7J3B-CyccXa7d.js => chunk-2Q5K7J3B-Cuc5ie7-.js} (66%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-5RXB4S5H-CBgp1FHA.js => chunk-5RXB4S5H-DkAcAzhi.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-5VM5RSS4-vUjcD3vu.js => chunk-5VM5RSS4-B3rPasDn.js} (83%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-6Q2QTUOP-j9aiRH_7.js => chunk-6Q2QTUOP-BxvHVKr0.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-GF5L2VYU-BTSZzrkC.js => chunk-GF5L2VYU-DxVoovyk.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-JWPE2WC7-BB3xX8QT.js => chunk-JWPE2WC7-BZ3X4qaY.js} (78%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-KBJHAD2P-BMo0zsm5.js => chunk-KBJHAD2P-CjQn-4mK.js} (87%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-RYQCIY6F-CywjY4-3.js => chunk-RYQCIY6F-CGpD7Uj6.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{chunk-XXDRQBXY-DhKwTljB.js => chunk-XXDRQBXY-sABBpUdy.js} (53%)
create mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-JCYQIIEL-BUtjNsWs.js
delete mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-JCYQIIEL-CYAXibHo.js
create mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-v2-OCEON4UE-BUtjNsWs.js
delete mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-v2-OCEON4UE-CYAXibHo.js
rename veadk/webui/assets/visualizations/mermaid/{cose-bilkent-JH36ORCC-r5ofRJEl.js => cose-bilkent-JH36ORCC-CB1m4BoC.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{cynefin-OW5HDTMX-D8klTWXi.js => cynefin-OW5HDTMX-Ckz3rKt1.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{cynefinDiagram-MW4NZA55-Dyesmk9p.js => cynefinDiagram-MW4NZA55-B8TWbKqb.js} (98%)
rename veadk/webui/assets/visualizations/mermaid/{dagre-VZM6K2ZE-D4MZxk-p.js => dagre-VZM6K2ZE-jG98pt9I.js} (97%)
rename veadk/webui/assets/visualizations/mermaid/{diagram-7IWD3JNH-BYyMfVa-.js => diagram-7IWD3JNH-DZ76pD-Q.js} (96%)
rename veadk/webui/assets/visualizations/mermaid/{diagram-B4RE2ZJO-217AagsF.js => diagram-B4RE2ZJO-rB1S1yfJ.js} (97%)
rename veadk/webui/assets/visualizations/mermaid/{diagram-LBJQPF4R-CphN9cTh.js => diagram-LBJQPF4R-CrDpozB-.js} (94%)
rename veadk/webui/assets/visualizations/mermaid/{diagram-Q27KOJAE-C96z702U.js => diagram-Q27KOJAE-UDl8YDCB.js} (98%)
rename veadk/webui/assets/visualizations/mermaid/{diagram-UB23O5K3-BvKVBGmh.js => diagram-UB23O5K3-Cn76qpdV.js} (95%)
rename veadk/webui/assets/visualizations/mermaid/{ebnfDiagram-BXEA7PRR-Bw-Ku-2N.js => ebnfDiagram-BXEA7PRR-18Vh_BWX.js} (87%)
rename veadk/webui/assets/visualizations/mermaid/{erDiagram-JOGREHBK-VHa0fDi4.js => erDiagram-JOGREHBK-Cy7w0v1h.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{flowDiagram-UKHOOZJN-Hmo_eBIp.js => flowDiagram-UKHOOZJN-DZkAHgmK.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{ganttDiagram-PKOTCBZU-C2tlUiE8.js => ganttDiagram-PKOTCBZU-COvFwH2O.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{gitGraphDiagram-DS77QQ5N-BithI0OM.js => gitGraphDiagram-DS77QQ5N-Bn7ckgBg.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{infoDiagram-6WML65LV-CHF-grVQ.js => infoDiagram-6WML65LV-BGQQjDep.js} (69%)
rename veadk/webui/assets/visualizations/mermaid/{ishikawaDiagram-WSZJBQD7-CdjLRB_o.js => ishikawaDiagram-WSZJBQD7-DVDLfh5B.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{journeyDiagram-NVQOT4AX-DCW6rG8w.js => journeyDiagram-NVQOT4AX-C65sCAhe.js} (98%)
rename veadk/webui/assets/visualizations/mermaid/{kanban-definition-27J2QSJJ-DZ2j5ah6.js => kanban-definition-27J2QSJJ-BTbzJ_ZQ.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{mermaid.core-BpZvGNH3.js => mermaid.core-DeGzkuWe.js} (98%)
rename veadk/webui/assets/visualizations/mermaid/{mindmap-definition-FAOFIHXS-DJNFDpV4.js => mindmap-definition-FAOFIHXS-DUAns_22.js} (98%)
rename veadk/webui/assets/visualizations/mermaid/{pegDiagram-VL7TDLO6-jmRW3ZXv.js => pegDiagram-VL7TDLO6-jG4c0tDl.js} (87%)
rename veadk/webui/assets/visualizations/mermaid/{pieDiagram-7S7Q4E2Y-DUz85w4N.js => pieDiagram-7S7Q4E2Y-CsT4L9vZ.js} (96%)
rename veadk/webui/assets/visualizations/mermaid/{quadrantDiagram-CIZ2JOQS-DqE3BBQF.js => quadrantDiagram-CIZ2JOQS-BTnoKIrq.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{railroadDiagram-AXF67PYL-Bp91GmHk.js => railroadDiagram-AXF67PYL-B8dHCT_8.js} (84%)
rename veadk/webui/assets/visualizations/mermaid/{requirementDiagram-LRYGKXZP-SIp-PyW1.js => requirementDiagram-LRYGKXZP-CJhYPk23.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{sankeyDiagram-W5VNT64P-B0ngoQEy.js => sankeyDiagram-W5VNT64P-DemPr4LT.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{sequenceDiagram-SI44F4Z6-DERdyOzt.js => sequenceDiagram-SI44F4Z6-s4R2WnG5.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{sizeCapture-X5ZJPWSS-BWMHss15.js => sizeCapture-X5ZJPWSS-CHGscOn5.js} (87%)
rename veadk/webui/assets/visualizations/mermaid/{stateDiagram-OKZ733FA-CvIaU_Sh.js => stateDiagram-OKZ733FA-BiXkLbKS.js} (96%)
create mode 100644 veadk/webui/assets/visualizations/mermaid/stateDiagram-v2-UEYNNEHI-CVc3nAiM.js
delete mode 100644 veadk/webui/assets/visualizations/mermaid/stateDiagram-v2-UEYNNEHI-Cdnedrlb.js
rename veadk/webui/assets/visualizations/mermaid/{swimlanes-SLNWSIFB-Dre9hzwE.js => swimlanes-SLNWSIFB-29nR2vPa.js} (99%)
delete mode 100644 veadk/webui/assets/visualizations/mermaid/swimlanesDiagram-ULZ7WXOC-D6zY6Lub.js
create mode 100644 veadk/webui/assets/visualizations/mermaid/swimlanesDiagram-ULZ7WXOC-oPtzMUJA.js
rename veadk/webui/assets/visualizations/mermaid/{timeline-definition-Z64GVDOM-BkyKsLGP.js => timeline-definition-Z64GVDOM-b5AcyL5V.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{vennDiagram-T6HMQDX7-C9EQJFbu.js => vennDiagram-T6HMQDX7-K3fkHwPY.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{wardleyDiagram-T6FBY63Y-CGZx944j.js => wardleyDiagram-T6FBY63Y-CU_6HeHe.js} (99%)
rename veadk/webui/assets/visualizations/mermaid/{xychartDiagram-ELKLHX3M-CRznHJCd.js => xychartDiagram-ELKLHX3M-DyeSCJVl.js} (99%)
diff --git a/frontend/README.md b/frontend/README.md
index 2e7200bbd..15881ace9 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -1473,20 +1473,27 @@ AI APP 新增 [ConversationFlow](src/components/ai-app/ConversationFlow/README.m
共享组件目录见 [组件库说明](src/components/README.md),预览目录见
[Components Preview](src/components-preview/README.md)
-运行 `npm run dev:components` 打开独立组件预览页,按基础组件、复合组件、布局、节点组件和 AI APP 分组浏览 Figma 组件
+运行 `npm run dev:components` 打开独立组件预览页,按 Foundation、Base、Block、AI App、Node、Layout 分组,组内按组件名称排序
+Foundation 下的 Specification 展示用户确认的前端开发规则,支持复制规范;内容与 AI 可读取的 [Specification.md](src/components-preview/foundation/Specification.md) 保持同一来源
+组件名称使用一级标题,变种使用二级标题;Input 的前后图标变种合并展示,参数表统一在底部,可通过页内目录直接跳转
+Form Label Row 和 Glass Icon Button Group 独立归入 Block,Card Layout 归入 Layout,原有页面与小节链接继续可用
+Progress 对应 LongRunningState,Text 和 Code 两种详情形式分别在二级标题下展示,支持 `#progress` 与原有 `#long-running-state` 链接
+窄屏提供可展开的组件目录和本页目录,原有组件链接继续可用
预览包含可复用控件、完整 Radio 卡片、表格、页面布局和 Prompt Input,提供持久化明暗主题、语义 Token 展示及从 TypeScript 接口生成的参数表
主次按钮默认等高,Select 支持选项副标题,Prompt Input 支持提示词列表轮播;组件交互与使用约定见预览说明
Menu 提供文字与箭头触发的面板菜单,支持分组、多级子菜单及可选图标,预览中可查看交互示例与参数表
Toast 提供四种状态和自定义操作,通过 ToastProvider 与 useToast 管理堆叠、自动关闭及悬停暂停,继承明暗主题
-Loading 提供无限路径与圆环两种加载图形,ScrollArea 和卡片触底加载复用无限路径,支持明暗主题与减少动态效果偏好
+Loading 提供无限路径(默认 32 × 16px)与圆环(默认 20 × 20px)两种加载图形,ScrollArea 和卡片触底加载复用无限路径,支持明暗主题与减少动态效果偏好
EmptyState 支持圆形背景内的 24px 图标、标题与详细说明,以及复用 Button 的横排操作组;ErrorState 使用相同尺寸的红色断链图标且无按钮,两者均可在基础组件预览中查看
+Button 各样式并排展示 Compact、Default、Large,按钮底端对齐,尺寸说明在下方;文字按钮高度为 28 / 32 / 36px、字号为 12 / 14 / 16px,图标随字号缩放,Pill 使用同一套尺寸
Button 支持 loading,加载时自动禁用且只显示 Ring 图标,保留按钮尺寸与无障碍名称
-LongRunningState 使用居中的双栏工作区,左侧展示任务进度与可回看的已完成步骤,右侧复用 Drawer 的明暗主题玻璃材质与 ScrollArea 展示详情;查看历史不会改变执行进度,可返回当前步骤继续跟随,详情即时替换并短暂淡入,代码日志复用 CodeBlock 高亮并支持隐藏行号
+LongRunningState 整体左对齐,依次展示正常字号的当前进度名称、快速循环滑动的加载条和无背景 ScrollArea;名称切换时向上渐隐再滑入下一名称,完成后停止动画并保留结果,支持减少动态效果偏好
+ConversationFlow 新增步骤先展开空间再渐显内容,状态更新不重复进场,减少动态效果时直接显示
资源页首次加载统一复用 Infinity Path,详情布局不包含 Sidebar
ModalButton 复用 ModalLayout 并提供遮罩和进出动效;Drawer 以留有屏幕边距的浮动卡片打开;FileExplorer 组合文件树、CodeBlock 与 ScrollArea 展示文件内容
FileExplorer 按文件名显示常用文件图标并选择高亮语言,file.language 可覆盖,支持自动格式化、折行及可选编辑保存;CodeBlock 支持自动语法高亮、手动颜色 token 和纯文本,复制保留传入文本
Drawer 默认提供毛玻璃背景;FileUpload 复用 DashedZone 并提供文件选择与校验,Slider 支持原生拖动和键盘调整
-DatePicker 在基础组件中展示日期与日期时间选择;IndexLayout 在布局分组中展示首页;侧边栏会话示例位于复合组件的 Sidebar / 会话
+DatePicker 在基础组件中展示日期与日期时间选择;IndexLayout 在布局分组中展示首页;侧边栏会话示例位于 Block 分组的 Sidebar
### 组件库侧栏预览
diff --git a/frontend/SPEC.md b/frontend/SPEC.md
index 10989a131..232376a96 100644
--- a/frontend/SPEC.md
+++ b/frontend/SPEC.md
@@ -3,6 +3,9 @@
本文档是 AgentKit Studio 前端及其配套后端接口的 AI 开发规范。AI 在新增功能、
修复问题、生成代码或审查 PR 时,必须遵守本文档。
+前端开发还必须阅读 [Foundation / Specification](src/components-preview/foundation/Specification.md)
+该文档包含用户确认的开发规则,也是组件库 Specification 页的唯一内容来源;本文件其他条款与之冲突时,以该文档中的规则为准
+
规范中的关键词含义如下:
- **必须**:不可省略;不满足时不得合入。
@@ -120,8 +123,8 @@ hsl(var(--destructive))
### 3.2 字体与文字
- 继续使用当前中英文系统字体栈,不得为单个页面引入网络字体。
-- 非代码界面默认继承系统字体。只有源代码、命令、终端输出、日志、文件路径和结构化
- 配置片段可以使用等宽字体。
+- 界面默认继承现有 UI 字体,没有用户明确的特殊说明时禁止使用代码字体或等宽字体
+ 不因内容是源代码、命令、日志、路径或技术字段自动视为例外;用户明确指定后仅在指定区域使用
- 版本号、ID、模型名、Agent 名、Runtime 名、Badge、按钮、标题和普通技术字段不得仅因
“看起来技术化”就使用等宽字体。
- 正文通常为 `12.5px` 至 `14px`,页面标题和关键标题按现有组件层级递增。
@@ -578,7 +581,7 @@ AI 每次开发任务必须按以下顺序执行:
- [ ] 没有新增通用图标库用法、Emoji 图标或远程图标。
- [ ] 使用现有颜色、间距、圆角和状态模式。
- [ ] 同一页面及同级面板的左右、上下边缘已按共享锚点完整对齐。
-- [ ] 非代码信息未使用等宽字体,且没有无必要的副标题、小标题或品牌小字。
+- [ ] 未经用户明确指定的区域没有使用等宽字体,且没有无必要的副标题、小标题或品牌小字
- [ ] 新增下拉、分段 Tab、表单或对话框已与对应基准组件逐项对齐。
- [ ] 没有复制一套近似 CSS;第二个同类组件已复用或提取共享展示行为。
- [ ] 键盘、IME、焦点和无障碍属性完整。
diff --git a/frontend/src/components-preview/ComponentsPreview.tsx b/frontend/src/components-preview/ComponentsPreview.tsx
index 1aeb81342..96a91f10c 100644
--- a/frontend/src/components-preview/ComponentsPreview.tsx
+++ b/frontend/src/components-preview/ComponentsPreview.tsx
@@ -9,132 +9,175 @@ import { SliderPreview } from "./examples/SliderPreview";
import { IndexLayoutPreview } from "./examples/IndexLayoutPreview";
import { DatePickerPreview } from "./examples/DatePickerPreview";
import { LoadingPreview } from "./examples/LoadingPreview";
-import { ToastPreview } from "./examples/ToastPreview";
+import { ToastPreview, ToastHookApi } from "./examples/ToastPreview";
import { TablePreview } from "./examples/TablePreview";
import { RadioPreview } from "./examples/RadioPreview";
-import { InputWithHeaderIconPreview } from "./examples/InputWithHeaderIconPreview";
+import { InputPreview } from "./examples/InputPreview";
import { LoadMoreAreaPreview } from "./examples/LoadMoreAreaPreview";
import { ScrollArea } from "../components/primitives/ScrollArea";
import { ScrollAreaPreview } from "./examples/ScrollAreaPreview";
import { DividerPreview } from "./examples/DividerPreview";
import { DropdownPreview } from "./examples/DropdownPreview";
-import { MenuPreview } from "./examples/MenuPreview";
+import { MenuPreview, MenuEntryApi } from "./examples/MenuPreview";
import { PromptInputPreview } from "./examples/PromptInputPreview";
import { ConversationFlowPreview } from "./examples/ConversationFlowPreview";
-import { useSyncExternalStore } from "react";
-import { ButtonsPreview, CardsPreview, TabsPreview, InputWithTailIconPreview, ItemPreview, LabelPreview, SidebarPreview, SwitchPreview, CheckboxPreview, FormFieldPreview, DashedZonePreview, CodeBlockPreview, ModalLayoutPreview, HeaderPreview, PillTagPreview, FormLabelPreview, ResourcePageLayoutPreview, DetailPageLayoutPreview, TextareaPreview, SelectPreview, BasicNodePreview, AgentNodePreview, CanvasBackgroundPreview, TokensPreview } from "./examples";
+import { memo, useEffect, useRef, useState, useSyncExternalStore, type ComponentType } from "react";
+import { ComponentApi } from "./api/ComponentApi";
+import { PreviewContents } from "./PreviewContents";
+import { resolvePreviewLocation } from "./navigation";
+import { ButtonsPreview, CardsPreview, TabsPreview, ItemPreview, LabelPreview, SidebarPreview, SwitchPreview, CheckboxPreview, FormFieldPreview, DashedZonePreview, CodeBlockPreview, ModalLayoutPreview, HeaderPreview, PillTagPreview, FormLabelPreview, ResourcePageLayoutPreview, DetailPageLayoutPreview, TextareaPreview, SelectPreview, BasicNodePreview, AgentNodePreview, CanvasBackgroundPreview, TokensPreview } from "./examples";
import { useStudioTheme } from "../components/tokens/theme";
import { AppLayoutPreview } from "./examples/AppLayoutPreview";
+import { FormLabelRowPreview } from "./examples/FormLabelRowPreview";
+import { GlassIconButtonGroupPreview } from "./examples/GlassIconButtonGroupPreview";
+import { CardLayoutPreview } from "./examples/CardLayoutPreview";
+import { SpecificationPreview } from "./foundation/SpecificationPreview";
import "./components-preview.css";
-const examples = [
- { id: "app-layout", label: "App layout / 完整侧栏", Preview: AppLayoutPreview, group: "layouts" },
- { id: "date-picker", label: "Date Picker", Preview: DatePickerPreview, group: "primitives" },
- { id: "index-layout", label: "Index layout", Preview: IndexLayoutPreview, group: "layouts" },
- { id: "slider", label: "Slider", Preview: SliderPreview, group: "primitives" },
- { id: "file-upload", label: "File Upload", Preview: FileUploadPreview, group: "composites" },
- { id: "modal-button", label: "Modal Button", Preview: ModalButtonPreview, group: "composites" },
- { id: "drawer", label: "Drawer", Preview: DrawerPreview, group: "composites" },
- { id: "file-explorer", label: "File Explorer", Preview: FileExplorerPreview, group: "composites" },
- { id: "long-running-state", label: "Long-running State", Preview: LongRunningStatePreview, group: "composites" },
- { id: "empty-state", label: "Empty State", Preview: EmptyStatePreview, group: "primitives" },
- { id: "error-state", label: "Error State", Preview: ErrorStatePreview, group: "primitives" },
- { id: "loading", label: "Loading", Preview: LoadingPreview, group: "primitives" },
- { id: "toast", label: "Toast", Preview: ToastPreview, group: "primitives" },
- { id: "table", label: "Table", Preview: TablePreview, group: "primitives" },
- { id: "load-more", label: "下拉加载", Preview: LoadMoreAreaPreview, group: "composites" },
- { id: "scroll-area", label: "Scroll Area", Preview: ScrollAreaPreview, group: "primitives" },
- { id: "divider", label: "分割线", Preview: DividerPreview, group: "primitives" },
- { id: "dropdown", label: "Dropdown", Preview: DropdownPreview, group: "primitives" },
- { id: "prompt-input", label: "Prompt Input", Preview: PromptInputPreview, group: "ai-app" },
- { id: "conversation-flow", label: "Conversation Flow / 对话流", Preview: ConversationFlowPreview, group: "ai-app" },
- { id: "tokens", label: "Tokens", Preview: TokensPreview, group: "design" },
- { id: "canvas-background", label: "画布背景", Preview: CanvasBackgroundPreview, group: "nodes" },
- { id: "agent-node", label: "Agent 节点", Preview: AgentNodePreview, group: "nodes" },
- { id: "basic-node", label: "普通节点", Preview: BasicNodePreview, group: "nodes" },
- { id: "select", label: "Select", Preview: SelectPreview, group: "primitives" },
- { id: "menu", label: "Menu", Preview: MenuPreview, group: "primitives" },
- { id: "textarea", label: "Textarea", Preview: TextareaPreview, group: "primitives" },
- { id: "detail-page-layout", label: "Detail page", Preview: DetailPageLayoutPreview, group: "layouts" },
- { id: "form-label", label: "Form label", Preview: FormLabelPreview, group: "primitives" },
- { id: "resource-page-layout", label: "Resource page", Preview: ResourcePageLayoutPreview, group: "layouts" },
- { id: "pill-tag", label: "Pill tag", Preview: PillTagPreview, group: "primitives" },
- { id: "card", label: "Card", Preview: CardsPreview, group: "composites" },
- { id: "header", label: "Header", Preview: HeaderPreview, group: "composites" },
- { id: "modal-layout", label: "Modal layout", Preview: ModalLayoutPreview, group: "layouts" },
- { id: "code-block", label: "Code block", Preview: CodeBlockPreview, group: "composites" },
- { id: "button", label: "Button", Preview: ButtonsPreview, group: "primitives" },
- { id: "tabs", label: "Tabs", Preview: TabsPreview, group: "primitives" },
- { id: "input-tail-icon", label: "Input with tail icon", Preview: InputWithTailIconPreview, group: "primitives" },
- { id: "input-header-icon", label: "Input with header icon", Preview: InputWithHeaderIconPreview, group: "primitives" },
- { id: "label", label: "Label", Preview: LabelPreview, group: "primitives" },
- { id: "switch", label: "Switch", Preview: SwitchPreview, group: "primitives" },
- { id: "checkbox", label: "Checkbox", Preview: CheckboxPreview, group: "primitives" },
- { id: "radio", label: "Radio", Preview: RadioPreview, group: "primitives" },
- { id: "sidebar", label: "Sidebar / 会话", Preview: SidebarPreview, group: "composites" },
- { id: "form-field", label: "Form field", Preview: FormFieldPreview, group: "composites" },
- { id: "dashed-zone", label: "Dashed zone", Preview: DashedZonePreview, group: "composites" },
- { id: "item", label: "Item", Preview: ItemPreview, group: "composites" },
+type PreviewDefinition = {
+ id: string;
+ label: string;
+ Preview: ComponentType;
+ group: string;
+ apiNames: readonly string[];
+ ApiDetails?: ComponentType;
+};
+
+const examples: PreviewDefinition[] = [
+ { id: "app-layout", label: "App Layout", Preview: AppLayoutPreview, group: "layout", apiNames: ["AppLayout"] },
+ { id: "date-picker", label: "Date Picker", Preview: DatePickerPreview, group: "base", apiNames: ["DatePicker"] },
+ { id: "index-layout", label: "Index Layout", Preview: IndexLayoutPreview, group: "layout", apiNames: ["IndexLayout"] },
+ { id: "slider", label: "Slider", Preview: SliderPreview, group: "base", apiNames: ["Slider"] },
+ { id: "file-upload", label: "File Upload", Preview: FileUploadPreview, group: "block", apiNames: ["FileUpload"] },
+ { id: "modal-button", label: "Modal Button", Preview: ModalButtonPreview, group: "block", apiNames: ["ModalButton"] },
+ { id: "drawer", label: "Drawer", Preview: DrawerPreview, group: "block", apiNames: ["Drawer"] },
+ { id: "file-explorer", label: "File Explorer", Preview: FileExplorerPreview, group: "block", apiNames: ["FileExplorer"] },
+ { id: "long-running-state", label: "Progress", Preview: LongRunningStatePreview, group: "block", apiNames: ["LongRunningState"] },
+ { id: "empty-state", label: "Empty State", Preview: EmptyStatePreview, group: "base", apiNames: ["EmptyState"] },
+ { id: "error-state", label: "Error State", Preview: ErrorStatePreview, group: "base", apiNames: ["ErrorState"] },
+ { id: "loading", label: "Loading", Preview: LoadingPreview, group: "base", apiNames: ["Loading"] },
+ { id: "toast", label: "Toast", Preview: ToastPreview, group: "base", apiNames: ["Toast", "ToastProvider"], ApiDetails: ToastHookApi },
+ { id: "table", label: "Table", Preview: TablePreview, group: "base", apiNames: ["Table", "TableCellText", "TableStatus"] },
+ { id: "load-more", label: "Load More", Preview: LoadMoreAreaPreview, group: "block", apiNames: ["LoadMoreArea"] },
+ { id: "scroll-area", label: "Scroll Area", Preview: ScrollAreaPreview, group: "base", apiNames: ["ScrollArea"] },
+ { id: "divider", label: "Divider", Preview: DividerPreview, group: "base", apiNames: ["Divider"] },
+ { id: "dropdown", label: "Dropdown", Preview: DropdownPreview, group: "base", apiNames: ["Dropdown"] },
+ { id: "prompt-input", label: "Prompt Input", Preview: PromptInputPreview, group: "ai-app", apiNames: ["PromptInput", "SingleLinePromptInput"] },
+ { id: "conversation-flow", label: "Conversation Flow", Preview: ConversationFlowPreview, group: "ai-app", apiNames: ["ConversationFlow", "ConversationMarkdown", "ConversationVisualization", "ConversationSurface"] },
+ { id: "tokens", label: "Tokens", Preview: TokensPreview, group: "foundation", apiNames: [] },
+ { id: "specification", label: "Specification", Preview: SpecificationPreview, group: "foundation", apiNames: [] },
+ { id: "canvas-background", label: "Canvas Background", Preview: CanvasBackgroundPreview, group: "node", apiNames: ["CanvasBackground"] },
+ { id: "agent-node", label: "Agent Node", Preview: AgentNodePreview, group: "node", apiNames: ["AgentNode"] },
+ { id: "basic-node", label: "Basic Node", Preview: BasicNodePreview, group: "node", apiNames: ["BasicNode"] },
+ { id: "select", label: "Select", Preview: SelectPreview, group: "base", apiNames: ["Select"] },
+ { id: "menu", label: "Menu", Preview: MenuPreview, group: "base", apiNames: ["Menu"], ApiDetails: MenuEntryApi },
+ { id: "textarea", label: "Textarea", Preview: TextareaPreview, group: "base", apiNames: ["Textarea"] },
+ { id: "detail-page-layout", label: "Detail Page", Preview: DetailPageLayoutPreview, group: "layout", apiNames: ["DetailPageLayout"] },
+ { id: "form-label", label: "Form Label", Preview: FormLabelPreview, group: "base", apiNames: ["FormLabel"] },
+ { id: "form-label-row", label: "Form Label Row", Preview: FormLabelRowPreview, group: "block", apiNames: ["FormLabelRow"] },
+ { id: "resource-page-layout", label: "Resource Page", Preview: ResourcePageLayoutPreview, group: "layout", apiNames: ["ResourcePageLayout"] },
+ { id: "pill-tag", label: "Pill Tag", Preview: PillTagPreview, group: "base", apiNames: ["PillTag"] },
+ { id: "card", label: "Card", Preview: CardsPreview, group: "block", apiNames: ["ResourceCard", "InfoCard", "InfoCardTitle", "InfoCardBody", "PromoCard"] },
+ { id: "card-layout", label: "Card Layout", Preview: CardLayoutPreview, group: "layout", apiNames: ["CardLayout"] },
+ { id: "header", label: "Header", Preview: HeaderPreview, group: "block", apiNames: ["Header"] },
+ { id: "modal-layout", label: "Modal Layout", Preview: ModalLayoutPreview, group: "layout", apiNames: ["ModalLayout"] },
+ { id: "code-block", label: "Code Block", Preview: CodeBlockPreview, group: "block", apiNames: ["CodeBlock"] },
+ { id: "button", label: "Button", Preview: ButtonsPreview, group: "base", apiNames: ["Button", "GlassIconButton"] },
+ { id: "glass-icon-button-group", label: "Glass Icon Button Group", Preview: GlassIconButtonGroupPreview, group: "block", apiNames: ["GlassIconButtonGroup"] },
+ { id: "tabs", label: "Tabs", Preview: TabsPreview, group: "base", apiNames: ["UnderlineTabs", "PillTabs", "FilterTabs", "GlassTabs"] },
+ { id: "input", label: "Input", Preview: InputPreview, group: "base", apiNames: ["InputWithHeaderIcon", "InputWithTailIcon"] },
+ { id: "label", label: "Label", Preview: LabelPreview, group: "base", apiNames: ["Label"] },
+ { id: "switch", label: "Switch", Preview: SwitchPreview, group: "base", apiNames: ["Switch"] },
+ { id: "checkbox", label: "Checkbox", Preview: CheckboxPreview, group: "base", apiNames: ["Checkbox"] },
+ { id: "radio", label: "Radio", Preview: RadioPreview, group: "base", apiNames: ["RadioCard", "Radio"] },
+ { id: "sidebar", label: "Sidebar", Preview: SidebarPreview, group: "block", apiNames: ["Sidebar", "SidebarAccount", "SidebarGroupTitle", "SidebarItem", "SidebarItemWithIcon"] },
+ { id: "form-field", label: "Form Field", Preview: FormFieldPreview, group: "block", apiNames: ["FormField"] },
+ { id: "dashed-zone", label: "Dashed Zone", Preview: DashedZonePreview, group: "block", apiNames: ["DashedZone"] },
+ { id: "item", label: "Item", Preview: ItemPreview, group: "block", apiNames: ["Item"] },
];
const groups = [
- { id: "ai-app", label: "AI APP", items: examples.filter((item) => item.group === "ai-app") },
- { id: "design", label: "设计规范", items: examples.filter((item) => item.group === "design") },
- { id: "nodes", label: "节点组件", items: examples.filter((item) => item.group === "nodes") },
- { id: "primitives", label: "基础组件", items: examples.filter((item) => item.group === "primitives") },
- { id: "composites", label: "复合组件", items: examples.filter((item) => item.group === "composites") },
- { id: "layouts", label: "布局", items: examples.filter((item) => item.group === "layouts") },
-];
+ { id: "foundation", label: "Foundation" },
+ { id: "base", label: "Base" },
+ { id: "block", label: "Block" },
+ { id: "ai-app", label: "AI App" },
+ { id: "node", label: "Node" },
+ { id: "layout", label: "Layout" },
+].map(group => ({
+ ...group,
+ items: examples.filter(item => item.group === group.id).sort((a, b) => a.label.localeCompare(b.label, "en")),
+}));
function subscribeToHash(onChange: () => void) {
window.addEventListener("hashchange", onChange);
return () => window.removeEventListener("hashchange", onChange);
}
-function getSelectedExample() {
- const id = window.location.hash.slice(1);
- if (["underline-tabs", "pill-tabs", "filter-tabs"].includes(id)) return "tabs";
- if (["resource-card", "info-card", "card-layout"].includes(id)) return "card";
- if (["glass-icon-button", "glass-icon-button-group"].includes(id)) return "button";
- return id;
-}
+const getHash = () => window.location.hash;
+
+const PreviewBody = memo(function PreviewBody({ example }: { example: PreviewDefinition }) {
+ const { Preview, ApiDetails } = example;
+ return <>
+
+ {example.apiNames.length > 0 &&
+ 参数与属性
+
+ {ApiDetails && }
+ }
+ >;
+});
export function ComponentsPreview() {
const [theme, changeTheme] = useStudioTheme();
- const selectedId = useSyncExternalStore(subscribeToHash, getSelectedExample, () => "button");
- const selected = examples.find((example) => example.id === selectedId) ?? examples.find((example) => example.id === "button")!;
- const Preview = selected.Preview;
- if (new URLSearchParams(window.location.search).get("fullscreen") === "app-layout") return ;
+ const [navigationOpen, setNavigationOpen] = useState(false);
+ const hash = useSyncExternalStore(subscribeToHash, getHash, () => "#button");
+ const location = resolvePreviewLocation(hash);
+ const selected = examples.find(example => example.id === location.component) ?? examples.find(example => example.id === "button")!;
+ const scrollRef = useRef(null);
+ const fullscreen = new URLSearchParams(window.location.search).get("fullscreen") === "app-layout";
+
+ useEffect(() => {
+ document.title = `${selected.label} | AgentKit Studio Components`;
+ }, [selected.label]);
+
+ if (fullscreen) return ;
return (
-
- Components Preview
-
-
-
+
+
+
Components Preview
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+ {selected.label}
+
+
+
);
}
diff --git a/frontend/src/components-preview/PreviewContents.tsx b/frontend/src/components-preview/PreviewContents.tsx
new file mode 100644
index 000000000..9e9df5d31
--- /dev/null
+++ b/frontend/src/components-preview/PreviewContents.tsx
@@ -0,0 +1,86 @@
+import { useEffect, useRef, useState, type RefObject } from "react";
+import { ScrollArea } from "../components/primitives/ScrollArea";
+
+type Heading = { id: string; label: string };
+
+export function PreviewContents({ scrollRef, componentId, sectionId }: {
+ scrollRef: RefObject;
+ componentId: string;
+ sectionId: string;
+}) {
+ const [headings, setHeadings] = useState([]);
+ const [activeId, setActiveId] = useState("");
+ const mobileRef = useRef(null);
+
+ useEffect(() => {
+ const scroll = scrollRef.current;
+ if (!scroll) return;
+ const nodes = Array.from(scroll.querySelectorAll("h2[data-preview-heading]"));
+ setHeadings(nodes.map(node => ({ id: node.id, label: node.textContent?.trim() || "" })));
+ let frame = 0;
+ function updateActive() {
+ frame = 0;
+ const top = scroll!.getBoundingClientRect().top + 40;
+ let current = nodes[0];
+ for (const node of nodes) {
+ if (node.getBoundingClientRect().top <= top) current = node;
+ }
+ setActiveId(current?.id || "");
+ }
+ function scheduleUpdate() {
+ if (!frame) frame = requestAnimationFrame(updateActive);
+ }
+ scroll.addEventListener("scroll", scheduleUpdate, { passive: true });
+ const observer = new ResizeObserver(scheduleUpdate);
+ observer.observe(scroll);
+ if (scroll.firstElementChild) observer.observe(scroll.firstElementChild);
+ updateActive();
+ return () => {
+ scroll.removeEventListener("scroll", scheduleUpdate);
+ observer.disconnect();
+ cancelAnimationFrame(frame);
+ };
+ }, [componentId, scrollRef]);
+
+ useEffect(() => {
+ const scroll = scrollRef.current;
+ if (!scroll) return;
+ if (mobileRef.current) mobileRef.current.open = false;
+ const heading = Array.from(scroll.querySelectorAll("h2[data-preview-heading]")).find(node => node.id === sectionId);
+ if (heading) {
+ heading.tabIndex = -1;
+ heading.focus({ preventScroll: true });
+ scroll.scrollTo({ top: heading.getBoundingClientRect().top - scroll.getBoundingClientRect().top + scroll.scrollTop - 24 });
+ setActiveId(heading.id);
+ } else {
+ scroll.scrollTo({ top: 0 });
+ }
+ }, [componentId, sectionId, scrollRef]);
+
+ const links = ;
+
+ return <>
+
+ 本页目录
+ {links}
+
+
+ 本页目录
+ {links}
+
+ >;
+}
diff --git a/frontend/src/components-preview/README.md b/frontend/src/components-preview/README.md
index 2ab02543d..5574dfba6 100644
--- a/frontend/src/components-preview/README.md
+++ b/frontend/src/components-preview/README.md
@@ -16,14 +16,25 @@ npm run dev:components
## 内容与使用
+导航依次为 Foundation、Base、Block、AI App、Node、Layout,组内按组件名称排序
+Base 对应基础组件,Block 对应复合组件;同一组件的变种集中在一个页面,例如 Input 包含 Leading Icon 和 Trailing Icon
+Form Label Row 和 Glass Icon Button Group 独立归入 Block,Card Layout 归入 Layout,不作为基础组件的外观变种
+Progress 对应 LongRunningState 组件,正文 Text 和代码 Code 分别在二级标题下独立展示,各自支持步骤推进和重新开始;`#progress` 与原来的 `#long-running-state` 均可访问
+组件名称使用一级标题,变种使用二级标题,参数与属性统一放在页面底部
+桌面右侧的本页目录可跳转到各变种和参数区;窄屏使用可展开的组件目录和本页目录
+变种链接采用 `#组件/小节`,例如 `#button/button-loading-title`;原有组件、Tabs、Card、玻璃按钮和 Input 链接继续可用,迁移到独立页面的旧小节链接也会定位到对应组件
+
+
组件实现在 `src/components/`,预览示例位于本目录的 `examples/`,示例直接使用真实组件
-- 设计规范:颜色、字体、尺寸、间距、圆角和动效 Tokens
-- 基础组件:Button、Tabs、Label、FormLabel、InputWithTailIcon、InputWithHeaderIcon、Textarea、Select、DatePicker、Menu、Switch、Checkbox、Radio、RadioCard、PillTag、Divider、Dropdown、ScrollArea、Table、Toast、Loading、EmptyState、ErrorState、Slider
-- 复合组件:Sidebar、Item、卡片、Header、FormField、FormLabelRow、DashedZone、CodeBlock、LongRunningState、ModalButton、Drawer、FileExplorer、FileUpload 和玻璃按钮组
-- 布局:AppLayout、CardLayout、ModalLayout、ResourcePageLayout、DetailPageLayout、IndexLayout
-- 节点组件:BasicNode、AgentNode、CanvasBackground
-- AI APP:PromptInput、ConversationFlow,对话流包含完整分析、富内容、多模态输入、多模态回复、授权与错误五个可交互示例
+- Foundation:Specification 前端开发规范,以及颜色、字体、尺寸、间距、圆角和动效 Tokens
+- Base:Button、Tabs、Label、FormLabel、Input、Textarea、Select、DatePicker、Menu、Switch、Checkbox、Radio、RadioCard、PillTag、Divider、Dropdown、ScrollArea、Table、Toast、Loading、EmptyState、ErrorState、Slider
+- Block:Sidebar、Item、卡片、Header、FormField、FormLabelRow、DashedZone、CodeBlock、Progress(LongRunningState)、ModalButton、Drawer、FileExplorer、FileUpload 和玻璃按钮组
+- Layout:AppLayout、CardLayout、ModalLayout、ResourcePageLayout、DetailPageLayout、IndexLayout
+- Node:BasicNode、AgentNode、CanvasBackground
+- AI App:PromptInput、ConversationFlow,对话流包含完整分析、富内容、多模态输入、多模态回复、授权与错误五个可交互示例
+
+Specification 通过 `#specification` 访问,以 [Specification.md](foundation/Specification.md) 为唯一内容来源,支持页内目录和复制规范,AI 开发前可直接读取该文档
ConversationFlow 按顺序展示思考、工具输入输出、子智能体移交、最终回复和执行指标
用户消息靠右,模型回复靠左,不显示头像和名称;复用默认 600px 高的 ScrollArea,通过 height / scrollAreaProps 配置,示例不包含输入框和执行计划
@@ -31,9 +42,10 @@ ECharts / Mermaid 实际渲染,支持源码切换和放大查看;文件预
`fromStudioTurns` 可接入现有 Studio 消息;组件行为、数据字段及全部回调见预览下方参数表与 [对话流说明](../components/ai-app/ConversationFlow/README.md)
Button、Tabs 和 Card 的变体集中展示,旧预览链接仍可访问
-Primary 和 Secondary 普通按钮默认同为 32px 高、上下 5px 内边距,图标按钮保持 28px
+Button 的每种样式并排展示 Compact、Default、Large,按钮底端对齐,尺寸说明放在按钮下方;文字按钮高度为 28 / 32 / 36px、字号为 12 / 14 / 16px、图标为 14 / 16 / 18px,Pill 共用相同尺寸;纯图标按钮高度为 20 / 28 / 36px
+尺寸说明读取各按钮实际渲染的高度、字号或图标尺寸,尺寸变量变化时同步更新
透明 Icon Button 通过 hoverEffect 选择 background(默认,悬停显示背景)或 icon(仅高亮图标);两种模式共用尺寸和主题 tokens,会话尾部不覆盖 Button 的图标、圆角或 hover 样式
-示例按 Figma 画布尺寸展示;示例数据和页面导航不属于组件 API
+固定宽度的 Header、Canvas Background 和 Resource Page 示例保留设计尺寸,在各自的 ScrollArea 内横向查看;示例数据和页面导航不属于组件 API
ModalLayout 提供 header、空白 body 插槽和 footer,实际遮罩与焦点管理由使用方提供
FormLabel 的 required 表示必填标记,表单控件需要同时设置原生 required 属性
Textarea 的 counter 为独立插槽,预览保留原稿计数
@@ -59,7 +71,7 @@ Toast 复用中性面板、状态色和 Button,支持提示、成功、警告
悬停或键盘聚焦时暂停计时;F6 可聚焦通知区,Escape 关闭当前聚焦通知,新增通知不抢焦点,支持减少动态效果偏好
Toast 是独立展示层;ToastProvider、useToast 和 ToastOptions 的参数表见 Toast 预览
-Loading 复现提供的 Infinity Path(48 × 24px、2 秒循环)与 Ring Sweep(40 × 40px、1 秒循环),支持 size、无障碍 label 和 decorative 属性,减少动态效果时显示静态图形
+Loading 提供 Infinity Path(默认 32 × 16px、2 秒循环)与 Ring Sweep(默认 20 × 20px、1 秒循环),支持 size、无障碍 label 和 decorative 属性,减少动态效果时显示静态图形
ScrollArea 加载时直接复用 Infinity Path,使用 24 × 12px 画布使路径与行内文字大小协调,仅显示图标;加载状态保留屏幕阅读器提示,颜色随明暗主题切换
EmptyState 默认显示 40px 圆形背景与 24px 空文件夹图标;icon 仅替换内部图标,传 null 隐藏图标区域,actions 接收任意数量的 Button,横排并在空间不足时换行
@@ -69,8 +81,11 @@ ResourcePageLayout 的 loading 状态在资源区域居中显示 Infinity Path
DetailPageLayout 不包含 Sidebar,内容随容器宽度展开,保留 Header、Tabs、Runtime 与顶部光效
-LongRunningState 使用居中的双栏工作区,左侧通过 steps 和 currentStep 展示任务进度与步骤,当前步骤使用 Infinity Path,已完成步骤显示对勾并支持回看;selectedStep / onSelectedStepChange 可控制历史选择,查看历史不改变执行进度,可返回当前步骤继续跟随
-右侧复用 Drawer 的明暗主题玻璃材质与 ScrollArea 展示 details,detailsMaxHeight 默认 360px,代码日志复用 CodeBlock 高亮并可隐藏行号;切换时详情即时替换并在原位短暂淡入,始终只显示一层正文,左侧位置稳定,窄容器上下排列,支持减少动态效果、减少透明度与高对比度偏好
+LongRunningState 整体左对齐,从上到下依次为 14px 当前进度名称、快速循环滑动的加载条和无背景的 ScrollArea 内容区
+名称切换时先向上渐隐,下一名称从下方向上滑入;执行中加载条以 1.1 秒周期循环滑动,不将未知进度伪装为百分比,完成后停止并保留最后的内容
+detailsMaxHeight 默认 240px,代码日志可复用透明背景的 CodeBlock;步骤切换后内容滚回顶部,同一步骤追加内容时保留阅读位置,支持减少动态效果偏好
+
+ConversationFlow 新追加的步骤先展开所需空间,再渐显内容;状态更新和展开历史详情不会重复进场,重试后重新追加的步骤会重新播放,减少动态效果时直接显示
ModalButton 的入口复用 Button,弹窗复用 ModalLayout,body 默认留空;提供遮罩、进出动效、焦点管理及 Esc 关闭,异步确认可使用 closeOnConfirm=false 与受控 open
Drawer 是距屏幕上下与右侧各 16px 的浮动卡片,默认宽 480px,正文复用 ScrollArea;surface 默认 glass,深色使用烟灰玻璃,浅色使用白色磨砂玻璃,真实模糊后方内容并显示柔和高光,也可设为 solid;两者的层级低于 Menu、Select 和 Toast
diff --git a/frontend/src/components-preview/api/ComponentApi.tsx b/frontend/src/components-preview/api/ComponentApi.tsx
index 4edce4d04..30f6ef29a 100644
--- a/frontend/src/components-preview/api/ComponentApi.tsx
+++ b/frontend/src/components-preview/api/ComponentApi.tsx
@@ -66,7 +66,7 @@ const componentNotes: Record> = {
},
LongRunningState: {
steps: "按执行顺序排列:id 为稳定唯一标识,title 为步骤名称,details 支持文字或 React 内容",
- currentStep: "当前执行步骤的 id,左侧此步骤显示 Loading,右侧展示对应详情;null 表示暂无执行步骤",
+ currentStep: "当前执行步骤的 id;名称向上淡出并滑入下一名称,加载条快速循环滑动,下方无背景 ScrollArea 展示对应详情;null 表示暂无执行步骤",
},
ModalButton: {
label: "触发按钮内容,点击后打开复用 ModalLayout 的弹窗",
@@ -126,8 +126,8 @@ const componentNotes: Record> = {
style: "外层容器样式,可调整宽度、内边距或最小高度",
},
Loading: {
- variant: "infinity 无限路径(默认 48 × 24px、2 秒循环);ring 圆环(默认 40 × 40px、1 秒循环)",
- size: "图形宽度,单位 px;infinity 高度为宽度的一半,ring 宽高相同且描边按比例缩放",
+ variant: "infinity 无限路径(默认 32 × 16px、2 秒循环);ring 圆环(默认 20 × 20px、1 秒循环)",
+ size: "图形宽度,数字单位为 px,也支持 CSS 长度;infinity 高度为宽度的一半,ring 宽高相同且描边按比例缩放",
label: "仅供屏幕阅读器读取的加载状态文案,不显示在图标旁",
decorative: "设为 true 时隐藏无障碍状态,由按钮等外层提供名称和加载状态",
},
@@ -152,11 +152,11 @@ const componentNotes: Record> = {
},
Button: {
loading: "默认 false;只显示居中的 Ring 图标并自动禁用按钮,设置 aria-busy,保留原宽高与无障碍名称",
- variant: "primary 主按钮、secondary 次按钮、outline 半透明描边按钮,默认高度统一为 32px;ghost 透明按钮、link 链接样式按钮",
- size: "default 保留各变体原始尺寸;large 为 36px,Header 的两个按钮共用;compact 仅用于 iconOnly,20 × 20px 且无内边距,Modal 关闭按钮复用",
- iconOnly: "纯图标按钮,默认 28 × 28px,large 为 36 × 36px;图标通过 startIcon 传入,需提供 aria-label,可组合不同 variant",
+ variant: "primary 主按钮、secondary 次按钮、outline 半透明描边按钮、ghost 透明按钮、link 链接样式按钮、pill 胶囊按钮;各样式共享尺寸选项,文字按钮默认高度为 32px",
+ size: "compact / default / large 的文字按钮高度为 28 / 32 / 36px,字号为 12 / 14 / 16px,图标为 14 / 16 / 18px,各样式共用;iconOnly 高度为 20 / 28 / 36px",
+ iconOnly: "纯图标按钮,compact / default / large 为 20 / 28 / 36px 方形,统一 6px 圆角;图标通过 startIcon 传入,需提供 aria-label,可组合不同 variant",
hoverEffect: "ghost 纯图标按钮支持 background(默认,悬停显示背景)与 icon(仅高亮图标,悬停和按下均保持透明背景),两种使用相同尺寸与明暗主题 tokens",
- endIcon: "右侧图标;link 样式下尺寸跟随字号,悬停或键盘聚焦时与文字下方虚线一起淡入,移开淡出",
+ endIcon: "右侧图标,尺寸跟随字号;link 样式下在悬停或键盘聚焦时与文字下方虚线一起淡入,移开淡出",
},
Radio: {
name: "同一组 Radio 使用相同 name,只能选中一项",
@@ -246,7 +246,7 @@ const componentNotes: Record> = {
const commonNative = new Set(["children", "className", "style", "id", "value", "defaultValue", "checked", "defaultChecked", "disabled", "readOnly", "onChange", "onClick", "name", "placeholder", "required", "maxLength", "type", "htmlFor", "aria-label"]);
-export function ComponentApi({ names }: { names: string[] }) {
+export function ComponentApi({ names }: { names: readonly string[] }) {
return
{names.map(name => {
const doc = docs[name];
diff --git a/frontend/src/components-preview/components-preview.css b/frontend/src/components-preview/components-preview.css
index 12479b877..362c17603 100644
--- a/frontend/src/components-preview/components-preview.css
+++ b/frontend/src/components-preview/components-preview.css
@@ -50,7 +50,7 @@ body { margin: 0; }
border-right: 1px solid var(--studio-border-subtle, #2b2b30);
}
-.components-preview-sidebar h1 {
+.components-preview-brand p {
margin: 0 12px 12px;
font-size: 15px;
line-height: 24px;
@@ -63,7 +63,7 @@ body { margin: 0; }
gap: 24px;
}
-.components-preview-sidebar h2 {
+.components-preview-group-label {
margin: 0;
height: 32px;
padding: 5px 10px;
@@ -171,3 +171,137 @@ body { margin: 0; }
@media (prefers-reduced-motion: reduce) {
.components-preview-theme button { transition: none; }
}
+
+.components-preview-page {
+ flex: 1;
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) 176px;
+ min-width: 0;
+ min-height: 0;
+}
+
+.components-preview-page > .components-preview-canvas {
+ grid-column: 1;
+ grid-row: 1;
+}
+
+.components-preview-page-title {
+ margin: 0 0 36px;
+ color: var(--studio-text-primary);
+ font-size: 21px;
+ line-height: 28px;
+ font-weight: 600;
+}
+
+.components-preview-examples,
+.components-preview-variants {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr);
+ gap: 40px;
+ min-width: 0;
+}
+.components-preview-examples > *, .components-preview-variants > * { min-width: 0; }
+
+.components-preview-examples [data-preview-heading],
+.components-preview-api > h2 {
+ margin: 0 0 20px;
+ color: var(--studio-text-primary);
+ font-family: inherit;
+ font-size: 17px;
+ line-height: 26px;
+ font-weight: 500;
+ scroll-margin-top: 24px;
+}
+
+.components-preview-examples :is(.button-preview-examples, .date-picker-preview__examples, .label-preview-examples, .menu-preview__examples, .empty-state-preview__examples, .loading-preview-examples, .file-upload-preview__examples, .sidebar-preview-examples):has(> section > [data-preview-heading]) {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr);
+ gap: 40px;
+}
+
+.components-preview-api { margin-top: 48px; min-width: 0; }
+.components-preview-api > .component-api { margin-top: 0; }
+.components-preview-api > .component-api + .component-api { margin-top: 24px; }
+.components-preview-variant + .components-preview-variant { margin-top: 40px; }
+.components-preview-variant { min-width: 0; }
+.components-preview-examples .form-field-preview-required-title,
+.components-preview-examples .studio-slider + .components-preview-variant { margin-top: 40px; }
+.components-preview-example-row { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; }
+
+.components-preview-contents {
+ grid-column: 2;
+ grid-row: 1;
+ min-width: 0;
+ min-height: 0;
+ padding: 36px 16px 32px 0;
+}
+
+.components-preview-contents-label {
+ margin: 0 0 12px;
+ color: var(--studio-text-primary);
+ font-size: 13px;
+ font-weight: 500;
+}
+
+.components-preview-contents nav,
+.components-preview-contents-mobile nav { display: grid; gap: 4px; }
+.components-preview-contents a,
+.components-preview-contents-mobile a {
+ display: block;
+ padding: 6px 10px;
+ border-left: 1px solid var(--studio-border-subtle);
+ color: var(--studio-text-secondary);
+ font-size: 13px;
+ line-height: 20px;
+ text-decoration: none;
+ overflow-wrap: anywhere;
+}
+.components-preview-contents a:hover,
+.components-preview-contents-mobile a:hover { color: var(--studio-text-primary); }
+.components-preview-contents a[aria-current],
+.components-preview-contents-mobile a[aria-current] {
+ color: var(--studio-text-primary);
+ border-left-color: var(--studio-text-primary);
+}
+.components-preview-contents a:focus-visible,
+.components-preview-contents-mobile a:focus-visible,
+.components-preview-contents-mobile summary:focus-visible,
+.components-preview-navigation-toggle:focus-visible {
+ outline: 2px solid var(--studio-focus-ring);
+ outline-offset: 2px;
+}
+.components-preview-contents-mobile,
+.components-preview-navigation-toggle { display: none; }
+
+@media (max-width: 1100px) {
+ .components-preview-page { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); }
+ .components-preview-page > .components-preview-canvas { grid-row: 2; }
+ .components-preview-contents { display: none; }
+ .components-preview-contents-mobile {
+ display: block;
+ grid-column: 1;
+ grid-row: 1;
+ max-height: 32dvh;
+ overflow-y: auto;
+ padding: 12px 32px;
+ border-bottom: 1px solid var(--studio-border-subtle);
+ }
+ .components-preview-contents-mobile summary { padding: 4px 0; color: var(--studio-text-secondary); font-size: 13px; cursor: pointer; }
+ .components-preview-contents-mobile nav { padding: 12px 0 4px; }
+}
+
+@media (max-width: 760px) {
+ .components-preview { flex-direction: column; }
+ .components-preview-sidebar { flex: none; width: 100%; max-height: 52dvh; padding: 12px 16px; border-right: 0; border-bottom: 1px solid var(--studio-border-subtle); }
+ .components-preview-brand { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
+ .components-preview-brand p { margin: 0; }
+ .components-preview-navigation-toggle { display: inline-flex; align-items: center; gap: 6px; padding: 6px 0 6px 8px; border: 0; background: transparent; color: var(--studio-text-primary); font: inherit; font-size: 13px; cursor: pointer; }
+ .components-preview-navigation-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }
+ .components-preview-sidebar[data-navigation-open="false"] .components-preview-navigation { display: none; }
+ .components-preview-navigation { padding-top: 16px; }
+ .components-preview-theme { margin: 0 0 16px; }
+ .components-preview-page { min-height: 0; }
+ .components-preview-contents-mobile { padding: 8px 16px; }
+ .components-preview-canvas { padding: 24px 16px; }
+ .components-preview-page-title { margin-bottom: 28px; }
+}
diff --git a/frontend/src/components-preview/examples/AgentNodePreview.tsx b/frontend/src/components-preview/examples/AgentNodePreview.tsx
index b458a3045..b684ea9c4 100644
--- a/frontend/src/components-preview/examples/AgentNodePreview.tsx
+++ b/frontend/src/components-preview/examples/AgentNodePreview.tsx
@@ -1,11 +1,10 @@
-import { ComponentApi } from "../api/ComponentApi";
import { AgentNode } from "../../components/nodes/AgentNode";
import "./AgentNodePreview.css";
export function AgentNodePreview() {
- return
Agent node
+ return ;
}
diff --git a/frontend/src/components-preview/examples/AppLayoutPreview.tsx b/frontend/src/components-preview/examples/AppLayoutPreview.tsx
index 638396a97..8651f0bf3 100644
--- a/frontend/src/components-preview/examples/AppLayoutPreview.tsx
+++ b/frontend/src/components-preview/examples/AppLayoutPreview.tsx
@@ -12,7 +12,7 @@ import { Item } from "../../components/composites/Item";
import { PromptInput } from "../../components/ai-app/PromptInput";
import blocksIcon from "../../components/layouts/IndexLayout/assets/blocks.svg";
import codepenIcon from "../../components/layouts/IndexLayout/assets/codepen.svg";
-import { ComponentApi } from "../api/ComponentApi";
+
import { promptPlaceholders } from "./promptInputExamples";
import { useSidebarPreviewState } from "./sidebarPreviewState";
import "./AppLayoutPreview.css";
@@ -27,7 +27,7 @@ function AppLayoutExample({ fullscreen = false }: { fullscreen?: boolean }) {
return
-
App layout
+ {fullscreen ?
App Layout
:
Default
}
@@ -53,7 +53,6 @@ function AppLayoutExample({ fullscreen = false }: { fullscreen?: boolean }) {
>} />
- {!fullscreen &&
}
;
}
diff --git a/frontend/src/components-preview/examples/BasicNodePreview.tsx b/frontend/src/components-preview/examples/BasicNodePreview.tsx
index f9332bcda..d1e2da90f 100644
--- a/frontend/src/components-preview/examples/BasicNodePreview.tsx
+++ b/frontend/src/components-preview/examples/BasicNodePreview.tsx
@@ -1,15 +1,12 @@
-import { ComponentApi } from "../api/ComponentApi";
-import { useId } from "react";
import { BasicNode } from "../../components/nodes/BasicNode";
import "./BasicNodePreview.css";
export function BasicNodePreview() {
- const id = useId();
+ const id = "preview-basic-node";
return (
);
}
diff --git a/frontend/src/components-preview/examples/ButtonPreview.css b/frontend/src/components-preview/examples/ButtonPreview.css
index 62d24fabf..012fd991c 100644
--- a/frontend/src/components-preview/examples/ButtonPreview.css
+++ b/frontend/src/components-preview/examples/ButtonPreview.css
@@ -14,11 +14,6 @@
font-weight: 400;
}
-/* Exact frame width of the Figma specimen 631:246580 */
-.button-preview-create {
- width: 138px;
-}
-
.button-preview-icon-section,
.button-preview-loading-section {
margin-top: 32px;
@@ -38,3 +33,13 @@
align-items: center;
gap: 4px;
}
+
+.button-preview-sizes {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: flex-end;
+ gap: 20px 24px;
+}
+.button-preview-size-example { display: grid; justify-items: start; gap: 8px; }
+.button-preview-size-label { display: grid; color: var(--studio-text-secondary); font-size: 12px; line-height: 20px; white-space: nowrap; }
+.button-preview-icon-section > .button-preview-sizes { margin-bottom: 28px; }
diff --git a/frontend/src/components-preview/examples/ButtonPreview.tsx b/frontend/src/components-preview/examples/ButtonPreview.tsx
index 8f10bcc87..577899b18 100644
--- a/frontend/src/components-preview/examples/ButtonPreview.tsx
+++ b/frontend/src/components-preview/examples/ButtonPreview.tsx
@@ -1,8 +1,54 @@
-import { useEffect, useState } from "react";
-import { ComponentApi } from "../api/ComponentApi";
+import { useEffect, useLayoutEffect, useRef, useState } from "react";
+
import { Button, PlusIcon, PlayIcon, BackIcon, ExternalLinkIcon } from "../../components";
+import type { ButtonProps } from "../../components/primitives/Button";
import "./ButtonPreview.css";
+const sizes = [
+ { value: "compact", label: "Compact" },
+ { value: "default", label: "Default" },
+ { value: "large", label: "Large" },
+] as const;
+
+function ButtonSizeExample({ label, size, ...props }: ButtonProps & { label: string }) {
+ const buttonRef = useRef
(null);
+ const [metrics, setMetrics] = useState<{ height: string; detail: string } | null>(null);
+ const { iconOnly } = props;
+
+ useLayoutEffect(() => {
+ const button = buttonRef.current;
+ if (!button) return;
+ const icon = button.querySelector(".studio-button__icon");
+ const updateMetrics = () => {
+ const buttonStyle = getComputedStyle(button);
+ const next = {
+ height: buttonStyle.height,
+ detail: iconOnly && icon ? `图标 ${getComputedStyle(icon).width}` : `字号 ${buttonStyle.fontSize}`,
+ };
+ setMetrics(current => current?.height === next.height && current.detail === next.detail ? current : next);
+ };
+ updateMetrics();
+ const observer = new ResizeObserver(updateMetrics);
+ observer.observe(button);
+ button.querySelectorAll(".studio-button__icon, .studio-button__label").forEach(element => observer.observe(element));
+ return () => observer.disconnect();
+ }, [size, iconOnly]);
+
+ return
+
+
+ {label}{metrics && ` · 高 ${metrics.height}`}
+ {metrics?.detail}
+
+
;
+}
+
+function ButtonSizes(props: Omit) {
+ return
+ {sizes.map(size => )}
+
;
+}
+
export function ButtonPreview() {
const [loading, setLoading] = useState(false);
@@ -13,94 +59,87 @@ export function ButtonPreview() {
}, [loading]);
return (
-
-
+
-
- }>Create agent
+
+ }>Create agent
-
-
-
- }>Test
- }>Create
-
+
+ Cancel
-
- }>View details
+
+ }>View details
-
+
+ } aria-label="Add" />
-
+
} aria-label="Add with hover background" title="Hover background" />
-
+
} aria-label="Add with icon highlight" title="Hover icon highlight" />
-
+
} aria-label="Add row" title="Add row" />
} aria-label="Run row" title="Run row" />
-
+
} aria-label="Go back" title="Go back" />
-
+
} aria-label="Add disabled" title="Add disabled" disabled />
-
+
-
+
} loading aria-label="Run" />
-
+
}
loading={loading}
@@ -111,7 +150,6 @@ export function ButtonPreview() {
-
);
}
diff --git a/frontend/src/components-preview/examples/ButtonsPreview.tsx b/frontend/src/components-preview/examples/ButtonsPreview.tsx
index 1adedf42a..47fcce318 100644
--- a/frontend/src/components-preview/examples/ButtonsPreview.tsx
+++ b/frontend/src/components-preview/examples/ButtonsPreview.tsx
@@ -1,11 +1,9 @@
import { ButtonPreview } from "./ButtonPreview";
import { GlassIconButtonPreview } from "./GlassIconButtonPreview";
-import { GlassIconButtonGroupPreview } from "./GlassIconButtonGroupPreview";
export function ButtonsPreview() {
return
-
;
}
diff --git a/frontend/src/components-preview/examples/CanvasBackgroundPreview.tsx b/frontend/src/components-preview/examples/CanvasBackgroundPreview.tsx
index f1cb224cd..d5310c7e3 100644
--- a/frontend/src/components-preview/examples/CanvasBackgroundPreview.tsx
+++ b/frontend/src/components-preview/examples/CanvasBackgroundPreview.tsx
@@ -1,10 +1,11 @@
-import { ComponentApi } from "../api/ComponentApi";
import { CanvasBackground } from "../../components/nodes/CanvasBackground";
+import { ScrollArea } from "../../components/primitives/ScrollArea";
export function CanvasBackgroundPreview() {
return
- 画布背景
-
-
+ Default
+
+
+
;
}
diff --git a/frontend/src/components-preview/examples/CardLayoutPreview.tsx b/frontend/src/components-preview/examples/CardLayoutPreview.tsx
index c6ae3ed7d..355522793 100644
--- a/frontend/src/components-preview/examples/CardLayoutPreview.tsx
+++ b/frontend/src/components-preview/examples/CardLayoutPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { useState } from "react";
import { CardLayout } from "../../components/layouts/CardLayout";
import { Button } from "../../components/primitives/Button";
@@ -6,8 +5,7 @@ import { Button } from "../../components/primitives/Button";
export function CardLayoutPreview() {
const [open, setOpen] = useState(true);
return
- Card layout
+ Default
{open ? setOpen(false)} /> : }
-
;
}
diff --git a/frontend/src/components-preview/examples/CardsPreview.tsx b/frontend/src/components-preview/examples/CardsPreview.tsx
index df61afa83..7f4194fe0 100644
--- a/frontend/src/components-preview/examples/CardsPreview.tsx
+++ b/frontend/src/components-preview/examples/CardsPreview.tsx
@@ -1,13 +1,11 @@
import { PromoCardPreview } from "./PromoCardPreview";
import { ResourceCardPreview } from "./ResourceCardPreview";
import { InfoCardPreview } from "./InfoCardPreview";
-import { CardLayoutPreview } from "./CardLayoutPreview";
export function CardsPreview() {
return ;
}
diff --git a/frontend/src/components-preview/examples/CheckboxPreview.tsx b/frontend/src/components-preview/examples/CheckboxPreview.tsx
index 9483785bd..aef4ac0ca 100644
--- a/frontend/src/components-preview/examples/CheckboxPreview.tsx
+++ b/frontend/src/components-preview/examples/CheckboxPreview.tsx
@@ -1,13 +1,11 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Checkbox } from "../../components/primitives/Checkbox";
import "./CheckboxPreview.css";
export function CheckboxPreview() {
return (
);
}
diff --git a/frontend/src/components-preview/examples/CodeBlockPreview.tsx b/frontend/src/components-preview/examples/CodeBlockPreview.tsx
index 06f13a9a0..530dcb872 100644
--- a/frontend/src/components-preview/examples/CodeBlockPreview.tsx
+++ b/frontend/src/components-preview/examples/CodeBlockPreview.tsx
@@ -1,11 +1,9 @@
-import { ComponentApi } from "../api/ComponentApi";
import { CodeBlock } from "../../components/composites/CodeBlock";
import { codeBlockSample } from "./codeBlockSample";
export function CodeBlockPreview() {
return ;
}
diff --git a/frontend/src/components-preview/examples/ConversationFlowPreview.css b/frontend/src/components-preview/examples/ConversationFlowPreview.css
index f86cc77fd..e949b0790 100644
--- a/frontend/src/components-preview/examples/ConversationFlowPreview.css
+++ b/frontend/src/components-preview/examples/ConversationFlowPreview.css
@@ -12,7 +12,7 @@
margin-bottom: 24px;
}
-.conversation-flow-preview__panel { padding-top: 24px; min-width: 0; }
+.conversation-flow-preview__panel { min-width: 0; }
.conversation-flow-preview__choice {
margin: 8px 0 0;
diff --git a/frontend/src/components-preview/examples/ConversationFlowPreview.tsx b/frontend/src/components-preview/examples/ConversationFlowPreview.tsx
index fcb52097b..04e38a6db 100644
--- a/frontend/src/components-preview/examples/ConversationFlowPreview.tsx
+++ b/frontend/src/components-preview/examples/ConversationFlowPreview.tsx
@@ -2,9 +2,8 @@ import { useCallback, useEffect, useRef, useState, type ComponentProps } from "r
import { ConversationFlow, type ConversationAssistantMessage, type ConversationBlock, type ConversationFeedback, type ConversationMessage, type ConversationStatus } from "../../components/ai-app/ConversationFlow";
import { ConversationSurface } from "../../components/ai-app/ConversationFlow/ConversationSurface";
import { Button } from "../../components/primitives/Button";
-import { UnderlineTabs } from "../../components/primitives/UnderlineTabs";
import { FileExplorer, type FileExplorerEntry } from "../../components/composites/FileExplorer";
-import { ComponentApi } from "../api/ComponentApi";
+
import chartImage from "./assets/conversation-media/chart.png";
import trendVideo from "./assets/conversation-media/trend.mp4";
import summaryAudio from "./assets/conversation-media/summary.m4a?url";
@@ -347,13 +346,12 @@ const scenes = [
] as const;
export function ConversationFlowPreview() {
- const [scene, setScene] = useState("analysis");
- return
- Conversation Flow
-
-
- {scene === "analysis" ?
: scene === "rich" ?
: scene === "multimodal" ?
: scene === "multimodal-response" ?
:
}
-
-
- ;
+ return
+ {scenes.map(scene =>
+ {scene.label}
+
+ {scene.value === "analysis" ?
: scene.value === "rich" ?
: scene.value === "multimodal" ?
: scene.value === "multimodal-response" ?
:
}
+
+ )}
+
;
}
diff --git a/frontend/src/components-preview/examples/DashedZonePreview.tsx b/frontend/src/components-preview/examples/DashedZonePreview.tsx
index 78e2feda7..db2bb863d 100644
--- a/frontend/src/components-preview/examples/DashedZonePreview.tsx
+++ b/frontend/src/components-preview/examples/DashedZonePreview.tsx
@@ -1,17 +1,14 @@
-import { ComponentApi } from "../api/ComponentApi";
-import { useId } from "react";
import { DashedZone } from "../../components/composites/DashedZone";
import "./DashedZonePreview.css";
export function DashedZonePreview() {
- const id = useId();
+ const id = "preview-dashed-zone";
return (
- Dashed zone
+ Default
-
);
}
diff --git a/frontend/src/components-preview/examples/DatePickerPreview.tsx b/frontend/src/components-preview/examples/DatePickerPreview.tsx
index bf2c2df91..932982be1 100644
--- a/frontend/src/components-preview/examples/DatePickerPreview.tsx
+++ b/frontend/src/components-preview/examples/DatePickerPreview.tsx
@@ -1,6 +1,6 @@
import { useState } from "react";
import { today } from "@internationalized/date";
-import { ComponentApi } from "../api/ComponentApi";
+
import { DatePicker } from "../../components/primitives/DatePicker";
import { FormField } from "../../components/composites/FormField";
import { Select } from "../../components/primitives/Select";
@@ -11,17 +11,16 @@ export function DatePickerPreview() {
const [date, setDate] = useState("");
const [runAt, setRunAt] = useState(() => `${today("Asia/Shanghai").add({ days: 1 })}T09:00`);
const start = today(zone);
- return
- Date Picker
+ return
- 定时任务 · 单次执行
+ 定时任务 · 单次执行
@@ -36,18 +35,17 @@ export function DatePickerPreview() {
{runAt ? `${runAt.replace("T", " ")} · ${zone}` : "请选择执行时间"}
-
;
}
diff --git a/frontend/src/components-preview/examples/DetailPageLayoutPreview.tsx b/frontend/src/components-preview/examples/DetailPageLayoutPreview.tsx
index 47879d5b7..cfbfe841a 100644
--- a/frontend/src/components-preview/examples/DetailPageLayoutPreview.tsx
+++ b/frontend/src/components-preview/examples/DetailPageLayoutPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { DetailPageLayout } from "../../components/layouts/DetailPageLayout";
import { Header } from "../../components/composites/Header";
import { InfoCard, InfoCardBody } from "../../components/composites/InfoCard";
@@ -22,7 +21,7 @@ function DetailPerformanceChart() {
export function DetailPageLayoutPreview() {
return
- Detail page layout
+ Default
Back}
header={}
@@ -33,6 +32,5 @@ export function DetailPageLayoutPreview() {
-
;
}
diff --git a/frontend/src/components-preview/examples/DividerPreview.tsx b/frontend/src/components-preview/examples/DividerPreview.tsx
index 75af9a486..3efa91e05 100644
--- a/frontend/src/components-preview/examples/DividerPreview.tsx
+++ b/frontend/src/components-preview/examples/DividerPreview.tsx
@@ -1,10 +1,8 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Divider } from "../../components/primitives/Divider";
export function DividerPreview() {
return
;
}
diff --git a/frontend/src/components-preview/examples/DrawerPreview.tsx b/frontend/src/components-preview/examples/DrawerPreview.tsx
index 74eb7e868..8f06deb86 100644
--- a/frontend/src/components-preview/examples/DrawerPreview.tsx
+++ b/frontend/src/components-preview/examples/DrawerPreview.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
import { Drawer } from "../../components/composites/Drawer";
import { Button } from "../../components/primitives/Button";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./DrawerPreview.css";
const sections = [
@@ -17,7 +17,7 @@ export function DrawerPreview() {
const [open, setOpen] = useState(false);
return (
);
}
diff --git a/frontend/src/components-preview/examples/DropdownPreview.tsx b/frontend/src/components-preview/examples/DropdownPreview.tsx
index 8b7e2c5f1..3e8423c78 100644
--- a/frontend/src/components-preview/examples/DropdownPreview.tsx
+++ b/frontend/src/components-preview/examples/DropdownPreview.tsx
@@ -1,12 +1,10 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Dropdown } from "../../components/primitives/Dropdown";
export function DropdownPreview() {
return
;
}
diff --git a/frontend/src/components-preview/examples/EmptyStatePreview.tsx b/frontend/src/components-preview/examples/EmptyStatePreview.tsx
index 3f1c5ee3f..279957cb9 100644
--- a/frontend/src/components-preview/examples/EmptyStatePreview.tsx
+++ b/frontend/src/components-preview/examples/EmptyStatePreview.tsx
@@ -1,6 +1,6 @@
import { Button } from "../../components/primitives/Button";
import { EmptyState } from "../../components/primitives/EmptyState";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./EmptyStatePreview.css";
function SearchEmptyIcon() {
@@ -14,11 +14,10 @@ function SearchEmptyIcon() {
export function EmptyStatePreview() {
return (
-
- Empty State
+
- 基础空状态
+ 基础空状态
- 自定义图标
+ 自定义图标
}
@@ -39,7 +38,6 @@ export function EmptyStatePreview() {
-
);
}
diff --git a/frontend/src/components-preview/examples/ErrorStatePreview.tsx b/frontend/src/components-preview/examples/ErrorStatePreview.tsx
index d86cdd374..8a3a0118c 100644
--- a/frontend/src/components-preview/examples/ErrorStatePreview.tsx
+++ b/frontend/src/components-preview/examples/ErrorStatePreview.tsx
@@ -1,18 +1,17 @@
import { ErrorState } from "../../components/primitives/ErrorState";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./ErrorStatePreview.css";
export function ErrorStatePreview() {
return (
- Error State
+ Default
-
);
}
diff --git a/frontend/src/components-preview/examples/FileExplorerPreview.tsx b/frontend/src/components-preview/examples/FileExplorerPreview.tsx
index f12da7d49..06139c277 100644
--- a/frontend/src/components-preview/examples/FileExplorerPreview.tsx
+++ b/frontend/src/components-preview/examples/FileExplorerPreview.tsx
@@ -1,6 +1,6 @@
import { useState } from "react";
import { FileExplorer, type FileExplorerEntry } from "../../components/composites/FileExplorer";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./FileExplorerPreview.css";
const demoFiles: readonly FileExplorerEntry[] = [
@@ -208,15 +208,14 @@ export function FileExplorerPreview() {
]);
const [editStatus, setEditStatus] = useState("");
return (
-
- File Explorer
- 只读 · 自动格式化与换行
+
+ 只读 · 自动格式化与换行
- 编辑与保存
+ 编辑与保存
{editStatus}
-
);
}
diff --git a/frontend/src/components-preview/examples/FileUploadPreview.tsx b/frontend/src/components-preview/examples/FileUploadPreview.tsx
index 719e0fc01..6a7d34331 100644
--- a/frontend/src/components-preview/examples/FileUploadPreview.tsx
+++ b/frontend/src/components-preview/examples/FileUploadPreview.tsx
@@ -1,26 +1,24 @@
import { useState } from "react";
import { FileUpload } from "../../components/composites/FileUpload";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./FileUploadPreview.css";
export function FileUploadPreview() {
const [files, setFiles] = useState([]);
- return
- File upload
+ return ;
}
diff --git a/frontend/src/components-preview/examples/FilterTabsPreview.tsx b/frontend/src/components-preview/examples/FilterTabsPreview.tsx
index 160e03333..a2fef60a3 100644
--- a/frontend/src/components-preview/examples/FilterTabsPreview.tsx
+++ b/frontend/src/components-preview/examples/FilterTabsPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { useState } from "react";
import { FilterTabs } from "../../components/primitives/FilterTabs";
import "./FilterTabsPreview.css";
@@ -7,10 +6,9 @@ export function FilterTabsPreview() {
const [value, setValue] = useState("all");
return (
);
}
diff --git a/frontend/src/components-preview/examples/FormFieldPreview.tsx b/frontend/src/components-preview/examples/FormFieldPreview.tsx
index ed2b94a33..0a19d6f4e 100644
--- a/frontend/src/components-preview/examples/FormFieldPreview.tsx
+++ b/frontend/src/components-preview/examples/FormFieldPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { useId, useState } from "react";
import { FormField } from "../../components/composites/FormField";
import { InputWithTailIcon } from "../../components/primitives/InputWithTailIcon";
@@ -31,7 +30,7 @@ export function FormFieldPreview() {
return (
-
);
}
diff --git a/frontend/src/components-preview/examples/FormLabelPreview.tsx b/frontend/src/components-preview/examples/FormLabelPreview.tsx
index 72debe620..93546a2f8 100644
--- a/frontend/src/components-preview/examples/FormLabelPreview.tsx
+++ b/frontend/src/components-preview/examples/FormLabelPreview.tsx
@@ -1,20 +1,18 @@
-import { ComponentApi } from "../api/ComponentApi";
import { FormLabel } from "../../components/primitives/FormLabel";
-import { FormLabelRow } from "../../components/composites/FormLabelRow";
-
export function FormLabelPreview() {
- return
-
-
+ return
+
+
+
Description
- Endpoint
- Endpoint
-
-
-
-
-
+
+
;
}
diff --git a/frontend/src/components-preview/examples/FormLabelRowPreview.tsx b/frontend/src/components-preview/examples/FormLabelRowPreview.tsx
new file mode 100644
index 000000000..5f7fa14f8
--- /dev/null
+++ b/frontend/src/components-preview/examples/FormLabelRowPreview.tsx
@@ -0,0 +1,8 @@
+import { FormLabelRow } from "../../components/composites/FormLabelRow";
+
+export function FormLabelRowPreview() {
+ return
;
+}
diff --git a/frontend/src/components-preview/examples/GlassIconButtonGroupPreview.tsx b/frontend/src/components-preview/examples/GlassIconButtonGroupPreview.tsx
index 205ed5879..c5a6f4ba2 100644
--- a/frontend/src/components-preview/examples/GlassIconButtonGroupPreview.tsx
+++ b/frontend/src/components-preview/examples/GlassIconButtonGroupPreview.tsx
@@ -1,9 +1,7 @@
-import { ComponentApi } from "../api/ComponentApi";
import { GlassIconButtonGroup } from "../../components/composites/GlassIconButtonGroup";
export function GlassIconButtonGroupPreview() {
return
;
}
diff --git a/frontend/src/components-preview/examples/GlassIconButtonPreview.tsx b/frontend/src/components-preview/examples/GlassIconButtonPreview.tsx
index 3089451f9..e9c695090 100644
--- a/frontend/src/components-preview/examples/GlassIconButtonPreview.tsx
+++ b/frontend/src/components-preview/examples/GlassIconButtonPreview.tsx
@@ -1,9 +1,7 @@
-import { ComponentApi } from "../api/ComponentApi";
import { GlassIconButton } from "../../components/primitives/GlassIconButton";
export function GlassIconButtonPreview() {
return
;
}
diff --git a/frontend/src/components-preview/examples/GlassTabsPreview.tsx b/frontend/src/components-preview/examples/GlassTabsPreview.tsx
index 7483506f5..ec348b362 100644
--- a/frontend/src/components-preview/examples/GlassTabsPreview.tsx
+++ b/frontend/src/components-preview/examples/GlassTabsPreview.tsx
@@ -1,18 +1,16 @@
-import { ComponentApi } from "../api/ComponentApi";
-import { useId, useState } from "react";
+import { useState } from "react";
import { GlassTabs } from "../../components/primitives/GlassTabs";
export function GlassTabsPreview() {
- const id = useId();
+ const id = "preview-glass-tabs";
const [value, setValue] = useState("development");
const items = [
{ value: "development", label: "Development", panelId: `${id}-panel-0` },
{ value: "daily-work", label: "Daily Work", panelId: `${id}-panel-1` },
];
return
- Glass tabs
+ Glass
{items.map((item, index) => )}
-
;
}
diff --git a/frontend/src/components-preview/examples/HeaderPreview.css b/frontend/src/components-preview/examples/HeaderPreview.css
index 2e5f3ba5b..2ae49cb34 100644
--- a/frontend/src/components-preview/examples/HeaderPreview.css
+++ b/frontend/src/components-preview/examples/HeaderPreview.css
@@ -1,3 +1,8 @@
+.header-preview-viewport {
+ width: 100%;
+ max-width: 100%;
+}
+
.header-preview-specimen {
width: 1042px;
}
diff --git a/frontend/src/components-preview/examples/HeaderPreview.tsx b/frontend/src/components-preview/examples/HeaderPreview.tsx
index 982605d21..29b7261a8 100644
--- a/frontend/src/components-preview/examples/HeaderPreview.tsx
+++ b/frontend/src/components-preview/examples/HeaderPreview.tsx
@@ -1,18 +1,19 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Header } from "../../components/composites/Header";
+import { ScrollArea } from "../../components/primitives/ScrollArea";
import "./HeaderPreview.css";
export function HeaderPreview() {
return (
);
}
diff --git a/frontend/src/components-preview/examples/IndexLayoutPreview.tsx b/frontend/src/components-preview/examples/IndexLayoutPreview.tsx
index 48c68885e..056058f2b 100644
--- a/frontend/src/components-preview/examples/IndexLayoutPreview.tsx
+++ b/frontend/src/components-preview/examples/IndexLayoutPreview.tsx
@@ -5,7 +5,7 @@ import { PromptInput } from "../../components/ai-app/PromptInput";
import { Item } from "../../components/composites/Item";
import blocksIcon from "../../components/layouts/IndexLayout/assets/blocks.svg";
import codepenIcon from "../../components/layouts/IndexLayout/assets/codepen.svg";
-import { ComponentApi } from "../api/ComponentApi";
+
import { promptPlaceholders } from "./promptInputExamples";
import "./IndexLayoutPreview.css";
@@ -16,7 +16,7 @@ export function IndexLayoutPreview() {
return (
- Index layout
+ Default
} />
>}
/>
-
);
}
diff --git a/frontend/src/components-preview/examples/InfoCardPreview.tsx b/frontend/src/components-preview/examples/InfoCardPreview.tsx
index 7059321c3..b1d4f78e6 100644
--- a/frontend/src/components-preview/examples/InfoCardPreview.tsx
+++ b/frontend/src/components-preview/examples/InfoCardPreview.tsx
@@ -1,12 +1,10 @@
-import { ComponentApi } from "../api/ComponentApi";
import { InfoCard, InfoCardBody } from "../../components/composites/InfoCard";
export function InfoCardPreview() {
return
- Info card
+ Info Card
-
;
}
diff --git a/frontend/src/components-preview/examples/InputPreview.tsx b/frontend/src/components-preview/examples/InputPreview.tsx
new file mode 100644
index 000000000..999e73478
--- /dev/null
+++ b/frontend/src/components-preview/examples/InputPreview.tsx
@@ -0,0 +1,9 @@
+import { InputWithHeaderIconPreview } from "./InputWithHeaderIconPreview";
+import { InputWithTailIconPreview } from "./InputWithTailIconPreview";
+
+export function InputPreview() {
+ return
+
+
+
;
+}
diff --git a/frontend/src/components-preview/examples/InputWithHeaderIconPreview.tsx b/frontend/src/components-preview/examples/InputWithHeaderIconPreview.tsx
index b39c97152..cf27c81e9 100644
--- a/frontend/src/components-preview/examples/InputWithHeaderIconPreview.tsx
+++ b/frontend/src/components-preview/examples/InputWithHeaderIconPreview.tsx
@@ -1,18 +1,17 @@
import { useState } from "react";
import { InputWithHeaderIcon } from "../../components/primitives/InputWithHeaderIcon";
-import { ComponentApi } from "../api/ComponentApi";
+
export function InputWithHeaderIconPreview() {
const [value, setValue] = useState("");
return
-
+
setValue(event.target.value)}
/>
-
;
}
diff --git a/frontend/src/components-preview/examples/InputWithTailIconPreview.tsx b/frontend/src/components-preview/examples/InputWithTailIconPreview.tsx
index 6d83bd1ee..8762fda71 100644
--- a/frontend/src/components-preview/examples/InputWithTailIconPreview.tsx
+++ b/frontend/src/components-preview/examples/InputWithTailIconPreview.tsx
@@ -17,7 +17,7 @@ export function InputWithTailIconPreview() {
return (
-
+
- Item
+ Default
-
+
+
Compact
-
);
}
diff --git a/frontend/src/components-preview/examples/LabelPreview.tsx b/frontend/src/components-preview/examples/LabelPreview.tsx
index 42af1f46c..9fc493267 100644
--- a/frontend/src/components-preview/examples/LabelPreview.tsx
+++ b/frontend/src/components-preview/examples/LabelPreview.tsx
@@ -1,27 +1,25 @@
-import { ComponentApi } from "../api/ComponentApi";
import githubIcon from "../../components/primitives/Label/assets/github.svg";
import statusDot from "../../components/composites/Header/assets/status-dot.svg";
-import { useId, useState } from "react";
+import { useState } from "react";
import { Label, LabelAddIcon } from "../../components/primitives/Label";
import "./LabelPreview.css";
export function LabelPreview() {
- const id = useId();
+ const id = "preview-label";
const [githubVisible, setGithubVisible] = useState(true);
return (
-
- Label
+
- Label
+ Label
- Label with icon
+ Label with icon
}>Add
- Label with close
+ Label with close
{githubVisible ? }
@@ -31,15 +29,14 @@ export function LabelPreview() {
>GitHub : null}
- Status label
+ Status label
- Pill label
+ Pill label
}>ACTIVE
-
);
}
diff --git a/frontend/src/components-preview/examples/LoadMoreAreaPreview.tsx b/frontend/src/components-preview/examples/LoadMoreAreaPreview.tsx
index c2cf71f33..90ee72fdb 100644
--- a/frontend/src/components-preview/examples/LoadMoreAreaPreview.tsx
+++ b/frontend/src/components-preview/examples/LoadMoreAreaPreview.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
import { LoadMoreArea } from "../../components/composites/LoadMoreArea";
import { ResourceCard } from "../../components/composites/ResourceCard";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./LoadMoreAreaPreview.css";
const examples = [
@@ -25,13 +25,12 @@ export function LoadMoreAreaPreview() {
if (!signal.aborted) setCount(current => Math.min(current + 6, 24));
}
return
- 下拉加载
+ Default
{Array.from({ length: count }, (_, index) => {
const [title, description] = examples[index % examples.length];
return ;
})}
-
;
}
diff --git a/frontend/src/components-preview/examples/LoadingPreview.css b/frontend/src/components-preview/examples/LoadingPreview.css
index 608a1cbbb..7adc03cd1 100644
--- a/frontend/src/components-preview/examples/LoadingPreview.css
+++ b/frontend/src/components-preview/examples/LoadingPreview.css
@@ -1,8 +1,6 @@
.loading-preview-examples {
- display: flex;
- flex-wrap: wrap;
- align-items: flex-start;
- gap: 48px;
+ display: grid;
+ gap: 32px;
}
-.loading-preview-examples > section { min-width: 120px; }
+.loading-preview-examples > section { min-width: 0; }
diff --git a/frontend/src/components-preview/examples/LoadingPreview.tsx b/frontend/src/components-preview/examples/LoadingPreview.tsx
index f8f89e212..babb98fc5 100644
--- a/frontend/src/components-preview/examples/LoadingPreview.tsx
+++ b/frontend/src/components-preview/examples/LoadingPreview.tsx
@@ -1,20 +1,18 @@
import { Loading } from "../../components/primitives/Loading";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./LoadingPreview.css";
export function LoadingPreview() {
- return
- Loading
+ return
- Infinity Path
+ Infinity Path
- Ring Sweep
+ Ring Sweep
-
;
}
diff --git a/frontend/src/components-preview/examples/LongRunningStatePreview.css b/frontend/src/components-preview/examples/LongRunningStatePreview.css
index 5fd89c034..45f3d9166 100644
--- a/frontend/src/components-preview/examples/LongRunningStatePreview.css
+++ b/frontend/src/components-preview/examples/LongRunningStatePreview.css
@@ -1,20 +1,11 @@
.long-running-state-preview__example {
width: 100%;
- max-width: 1240px;
- margin-inline: auto;
+ max-width: 640px;
}
-.long-running-state-preview__tabs { margin-bottom: 24px; }
-
.long-running-state-preview__frame {
box-sizing: border-box;
min-width: 0;
- min-height: 620px;
- display: grid;
- align-items: center;
- padding: 48px;
- border-radius: var(--studio-radius-2xl, 20px);
- background: var(--studio-bg-canvas, #101013);
}
.long-running-state-preview__details {
@@ -42,21 +33,11 @@
.long-running-state-preview__controls {
flex-wrap: wrap;
- justify-content: space-between;
+ justify-content: flex-start;
gap: 12px;
margin-top: 24px;
}
-.long-running-state-preview__position {
- color: var(--studio-text-secondary, rgba(219, 222, 231, .6));
- font-size: 13px;
- line-height: 20px;
-}
-
-@media (max-width: 900px) {
- .long-running-state-preview__frame { padding: 32px; }
-}
@media (max-width: 640px) {
- .long-running-state-preview__frame { min-height: 0; padding: 24px 16px; }
.long-running-state-preview__sources { gap: 6px 12px; }
}
diff --git a/frontend/src/components-preview/examples/LongRunningStatePreview.tsx b/frontend/src/components-preview/examples/LongRunningStatePreview.tsx
index 155cff7f6..3a3439c2e 100644
--- a/frontend/src/components-preview/examples/LongRunningStatePreview.tsx
+++ b/frontend/src/components-preview/examples/LongRunningStatePreview.tsx
@@ -1,9 +1,8 @@
import { useState } from "react";
import { LongRunningState, type LongRunningStep } from "../../components/composites/LongRunningState";
import { Button } from "../../components/primitives/Button";
-import { UnderlineTabs } from "../../components/primitives/UnderlineTabs";
import { CodeBlock } from "../../components/composites/CodeBlock";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./LongRunningStatePreview.css";
const steps: LongRunningStep[] = [
@@ -84,7 +83,7 @@ const completedDetails: Record = {
understand: "已确认分析范围:对照产品文档与知识库,整理调用趋势、并发峰值和配额建议,输出分析摘要",
research: "已完成检索,共匹配 12 条相关内容,合并重复来源并保留引用位置,供后续分析核对",
analyze: "已核对统计周期、合并重复信息,并为调用趋势、峰值变化和后续建议整理了对应依据",
- write: "分析摘要已生成,引用与结论检查完成,所有步骤的详情与执行日志均可回看",
+ write: "分析摘要已生成,引用与结论检查完成",
};
const completedLogs: Record = {
@@ -94,14 +93,8 @@ const completedLogs: Record = {
write: "10:42:12 [SUCCESS] 分析摘要已生成\n status: completed\n validation: passed",
};
-const detailModes = [
- { value: "text", label: "正文", id: "long-running-text-tab", panelId: "long-running-details-panel" },
- { value: "code", label: "代码", id: "long-running-code-tab", panelId: "long-running-details-panel" },
-];
-
-export function LongRunningStatePreview() {
+function LongRunningStateExample({ mode }: { mode: "text" | "code" }) {
const [stepIndex, setStepIndex] = useState(1);
- const [mode, setMode] = useState("code");
const completedIds = steps.slice(0, stepIndex).map(step => step.id);
const previewSteps = steps.map((step, index) => {
const completed = index < stepIndex;
@@ -116,22 +109,31 @@ export function LongRunningStatePreview() {
};
});
return (
-
- Long-running State
-
-
-
-
-
-
-
点击已完成步骤可查看历史记录
-
-
-
-
+
+
+
+
+
+
+
+
-
+
+ );
+}
+
+export function LongRunningStatePreview() {
+ return (
+
);
}
diff --git a/frontend/src/components-preview/examples/MenuPreview.tsx b/frontend/src/components-preview/examples/MenuPreview.tsx
index 97636b2b7..93b0ded38 100644
--- a/frontend/src/components-preview/examples/MenuPreview.tsx
+++ b/frontend/src/components-preview/examples/MenuPreview.tsx
@@ -2,7 +2,7 @@ import { useState } from "react";
import { ExternalLinkIcon } from "../../components/icons/ExternalLinkIcon";
import { PlusIcon } from "../../components/icons/PlusIcon";
import { Menu, type MenuEntry, type MenuItem } from "../../components/primitives/Menu";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./MenuPreview.css";
function DuplicateIcon() {
@@ -86,39 +86,38 @@ export function MenuPreview() {
setSelection(item.label);
}
- return
-
+ return
-
+
根据按钮位置和窗口空间自动调整方向与对齐
@@ -126,8 +125,12 @@ export function MenuPreview() {
{selection ? `已选择:${selection}` : "选择菜单项查看操作反馈"}
-
- ;
+}
+
+export function MenuEntryApi() {
+ return
@@ -137,6 +140,5 @@ export function MenuPreview() {
)}
-
- ;
+ ;
}
diff --git a/frontend/src/components-preview/examples/ModalButtonPreview.tsx b/frontend/src/components-preview/examples/ModalButtonPreview.tsx
index fffeada16..fc07bd26d 100644
--- a/frontend/src/components-preview/examples/ModalButtonPreview.tsx
+++ b/frontend/src/components-preview/examples/ModalButtonPreview.tsx
@@ -1,13 +1,12 @@
import { ModalButton } from "../../components/composites/ModalButton";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./ModalButtonPreview.css";
export function ModalButtonPreview() {
return
;
}
diff --git a/frontend/src/components-preview/examples/ModalLayoutPreview.tsx b/frontend/src/components-preview/examples/ModalLayoutPreview.tsx
index bf82c4919..b8f4520c4 100644
--- a/frontend/src/components-preview/examples/ModalLayoutPreview.tsx
+++ b/frontend/src/components-preview/examples/ModalLayoutPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { useState } from "react";
import { ModalLayout } from "../../components/layouts/ModalLayout";
import { Button } from "../../components/primitives/Button";
@@ -7,8 +6,7 @@ export function ModalLayoutPreview() {
const [open, setOpen] = useState(true);
const close = () => setOpen(false);
return
- Modal layout
+ Default
{open ? : }
-
;
}
diff --git a/frontend/src/components-preview/examples/PillTabsPreview.tsx b/frontend/src/components-preview/examples/PillTabsPreview.tsx
index fc3adc3af..a88e33b3f 100644
--- a/frontend/src/components-preview/examples/PillTabsPreview.tsx
+++ b/frontend/src/components-preview/examples/PillTabsPreview.tsx
@@ -1,10 +1,9 @@
-import { ComponentApi } from "../api/ComponentApi";
-import { useId, useState } from "react";
+import { useState } from "react";
import { PillTabs } from "../../components/primitives/PillTabs";
import "./PillTabsPreview.css";
export function PillTabsPreview() {
- const id = useId();
+ const id = "preview-pill-tabs";
const [value, setValue] = useState("open-api");
const items = [
{ value: "open-api", label: "Open API", panelId: `${id}-panel-0` },
@@ -14,7 +13,7 @@ export function PillTabsPreview() {
return (
- Pill tab
+ Pill
(
))}
-
);
}
diff --git a/frontend/src/components-preview/examples/PillTagPreview.tsx b/frontend/src/components-preview/examples/PillTagPreview.tsx
index 08e27f204..23816c071 100644
--- a/frontend/src/components-preview/examples/PillTagPreview.tsx
+++ b/frontend/src/components-preview/examples/PillTagPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { PillTag } from "../../components/primitives/PillTag";
import lark from "../../components/primitives/PillTag/assets/lark.svg";
import dingtalk from "../../components/primitives/PillTag/assets/dingtalk.svg";
@@ -7,13 +6,12 @@ import slack from "../../components/primitives/PillTag/assets/slack.svg";
export function PillTagPreview() {
return
- Pill tag
+ Default
}>Lark
}>DingTalk
}>WeCom
}>Slack
-
;
}
diff --git a/frontend/src/components-preview/examples/PromoCardPreview.tsx b/frontend/src/components-preview/examples/PromoCardPreview.tsx
index be8c0d90d..6c3ae28b0 100644
--- a/frontend/src/components-preview/examples/PromoCardPreview.tsx
+++ b/frontend/src/components-preview/examples/PromoCardPreview.tsx
@@ -1,17 +1,14 @@
-import { ComponentApi } from "../api/ComponentApi";
-import { useId } from "react";
import { PromoCard } from "../../components/composites/PromoCard";
import "./PromoCardPreview.css";
export function PromoCardPreview() {
- const id = useId();
+ const id = "preview-promo-card";
return (
- Promo card
+ Promo Card
-
);
}
diff --git a/frontend/src/components-preview/examples/PromptInputPreview.tsx b/frontend/src/components-preview/examples/PromptInputPreview.tsx
index 6da337fce..6542f6117 100644
--- a/frontend/src/components-preview/examples/PromptInputPreview.tsx
+++ b/frontend/src/components-preview/examples/PromptInputPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { PromptInput, SingleLinePromptInput } from "../../components/ai-app/PromptInput";
import { promptPlaceholders } from "./promptInputExamples";
@@ -10,13 +9,15 @@ const adjustmentPlaceholders = [
export function PromptInputPreview() {
return (
-
);
}
diff --git a/frontend/src/components-preview/examples/RadioPreview.tsx b/frontend/src/components-preview/examples/RadioPreview.tsx
index 3e9284c71..9136ad530 100644
--- a/frontend/src/components-preview/examples/RadioPreview.tsx
+++ b/frontend/src/components-preview/examples/RadioPreview.tsx
@@ -3,14 +3,14 @@ import { Radio, RadioCard } from "../../components/primitives/Radio";
import cloudIcon from "../../components/primitives/Radio/assets/cloud.svg";
import blocksIcon from "../../components/primitives/Radio/assets/blocks.svg";
import serverIcon from "../../components/primitives/Radio/assets/server.svg";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./RadioPreview.css";
export function RadioPreview() {
const [storage, setStorage] = useState("enterprise");
return (
- Radio
+ Radio Card
setStorage(event.target.value)}
/>
- Radio control
+ Radio control
-
);
}
diff --git a/frontend/src/components-preview/examples/ResourceCardPreview.tsx b/frontend/src/components-preview/examples/ResourceCardPreview.tsx
index 986f04e07..e08333017 100644
--- a/frontend/src/components-preview/examples/ResourceCardPreview.tsx
+++ b/frontend/src/components-preview/examples/ResourceCardPreview.tsx
@@ -1,13 +1,11 @@
-import { ComponentApi } from "../api/ComponentApi";
-import { useId } from "react";
import { ResourceCard } from "../../components/composites/ResourceCard";
import "./ResourceCardPreview.css";
export function ResourceCardPreview() {
- const id = useId();
+ const id = "preview-resource-card";
return (
- Resource card
+ Resource Card
-
);
}
diff --git a/frontend/src/components-preview/examples/ResourcePageLayoutPreview.css b/frontend/src/components-preview/examples/ResourcePageLayoutPreview.css
index f98b2d9e9..b5f19807d 100644
--- a/frontend/src/components-preview/examples/ResourcePageLayoutPreview.css
+++ b/frontend/src/components-preview/examples/ResourcePageLayoutPreview.css
@@ -5,7 +5,8 @@
font-weight: 400;
font-display: swap;
}
-.resource-page-preview-controls { display: flex; justify-content: flex-end; width: 1040px; margin-bottom: 16px; }
+.resource-page-preview-controls { display: flex; justify-content: flex-end; width: 100%; max-width: 1040px; margin-bottom: 16px; }
+.resource-page-preview-viewport { width: 100%; max-width: 100%; }
.resource-page-preview-banner { position: relative; width: 1040px; height: 160px; overflow: hidden; border-radius: 16px; background: #e9e9e9; }
.resource-page-preview-banner__background { position: absolute; left: -4px; top: -270px; width: 1044px; height: 585px; }
.resource-page-preview-banner__background img { width: 100%; height: 100%; object-fit: cover; }
@@ -13,8 +14,7 @@
.resource-page-preview-banner__copy { position: absolute; left: 34px; top: 29px; width: 604px; }
.resource-page-preview-banner__copy h3 { width: max-content; height: 35.2133px; margin: 0 0 0 7.48486px; color: white; font: 400 24px/36px "Resource Didact Gothic", sans-serif; transform: skewX(-12deg) scaleY(.97815); transform-origin: left top; }
.resource-page-preview-banner__copy p { margin: 2px 0 16px; color: rgba(255,255,255,.6); font-size: 14px; line-height: 21px; }
-.resource-page-preview-banner .resource-page-preview-banner__button { width: 136px; height: 37px; border: 1px solid rgba(255,255,255,.8); border-radius: 12px; padding: 7px 12px; gap: 10px; background: rgba(255,255,255,.1); backdrop-filter: blur(3.5px); color: rgba(255,255,255,.6); line-height: 21px; }
-.resource-page-preview-banner__button .studio-button__icon img { width: 16px; height: 16px; }
+.resource-page-preview-banner__button { width: 136px; }
.resource-page-preview-banner__agent { position: absolute; left: 778px; top: 26px; width: 61.725px; height: 62.125px; }
.resource-page-preview-banner__agent-label { position: absolute; left: 761px; top: 90px; color: white; font-family: "PingFang SC", sans-serif; font-size: 14px; font-weight: 500; line-height: 22px; }
.resource-page-preview-banner__decoration { position: absolute; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(255,255,255,.11); opacity: .3; border-radius: 12px; }
@@ -29,7 +29,6 @@
.resource-page-preview-search input::placeholder { color: var(--studio-text-tertiary, #7a7880); opacity: 1; }
.resource-page-preview-search:focus-within { outline: auto; }
.resource-page-preview-create { width: 138px; }
-.resource-page-preview-create .studio-button__icon img { width: 16px; height: 16px; }
.resource-page-preview-card { position: relative; }
.resource-page-preview-avatar { position: absolute; width: 37px; height: 37px; left: -.5px; top: -.5px; }
.resource-page-preview-avatar img { width: 100%; height: 100%; object-fit: cover; }
diff --git a/frontend/src/components-preview/examples/ResourcePageLayoutPreview.tsx b/frontend/src/components-preview/examples/ResourcePageLayoutPreview.tsx
index 00d451829..204ac5852 100644
--- a/frontend/src/components-preview/examples/ResourcePageLayoutPreview.tsx
+++ b/frontend/src/components-preview/examples/ResourcePageLayoutPreview.tsx
@@ -1,9 +1,9 @@
-import { ComponentApi } from "../api/ComponentApi";
import { useEffect, useState } from "react";
import { ResourcePageLayout } from "../../components/layouts/ResourcePageLayout";
import { ResourceCard } from "../../components/composites/ResourceCard";
import { FilterTabs } from "../../components/primitives/FilterTabs";
import { Button } from "../../components/primitives/Button";
+import { ScrollArea } from "../../components/primitives/ScrollArea";
import imgImage1636404790 from "../../components/layouts/ResourcePageLayout/assets/imgImage1636404790.png";
import imgImage1636404101 from "../../components/layouts/ResourcePageLayout/assets/imgImage1636404101.png";
import imgImage1636404793 from "../../components/layouts/ResourcePageLayout/assets/imgImage1636404793.png";
@@ -49,7 +49,7 @@ function ResourceBanner() {
Create Codex Agent
Code generation, bug fixing, logic analysis, and productivity
-
}>Create Now
+
}>Create Now
Codex Agent
@@ -72,9 +72,11 @@ export function ResourcePageLayoutPreview() {
const matchingResources = resources.filter((resource) => `${resource.title} ${resource.description}`.toLowerCase().includes(query.toLowerCase()));
return (
+
Default
+
}
actions={<>
- }>Create agent
+ }>Create agent
>}
>
{matchingResources.map((resource) => (
@@ -96,7 +98,7 @@ export function ResourcePageLayoutPreview() {
))}
-
+
);
}
diff --git a/frontend/src/components-preview/examples/ScrollAreaPreview.tsx b/frontend/src/components-preview/examples/ScrollAreaPreview.tsx
index 516a2bb35..ba8657036 100644
--- a/frontend/src/components-preview/examples/ScrollAreaPreview.tsx
+++ b/frontend/src/components-preview/examples/ScrollAreaPreview.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
import { ScrollArea } from "../../components/primitives/ScrollArea";
import { Button } from "../../components/primitives/Button";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./ScrollAreaPreview.css";
export function ScrollAreaPreview() {
@@ -16,29 +16,27 @@ export function ScrollAreaPreview() {
});
if (!signal.aborted) setCount(current => Math.min(current + 10, 50));
}
- return
-
+ return
-
+
{Array.from({ length: 20 }, (_, index) => Item {String(index + 1).padStart(2, "0")}
)}
-
+
{Array.from({ length: count }, (_, index) => Item {String(index + 1).padStart(2, "0")}
)}
-
+
{Array.from({ length: 12 }, (_, index) => Item {String(index + 1).padStart(2, "0")}
)}
-
;
}
diff --git a/frontend/src/components-preview/examples/SelectPreview.tsx b/frontend/src/components-preview/examples/SelectPreview.tsx
index 26c4757e3..25eec367a 100644
--- a/frontend/src/components-preview/examples/SelectPreview.tsx
+++ b/frontend/src/components-preview/examples/SelectPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Select, type SelectOption } from "../../components/primitives/Select";
import doubao from "../../components/primitives/Select/assets/doubao.svg";
import "./SelectPreview.css";
@@ -15,7 +14,7 @@ const describedModels: readonly SelectOption[] = [
export function SelectPreview() {
return
- Select
+ Default
},
...[
@@ -31,9 +30,8 @@ export function SelectPreview() {
].map(label => ({ value: label.toLowerCase(), label, icon:
})),
]} />
- With description
+ With description
-
;
}
diff --git a/frontend/src/components-preview/examples/SidebarPreview.tsx b/frontend/src/components-preview/examples/SidebarPreview.tsx
index 44c3b55fa..c9195d9c2 100644
--- a/frontend/src/components-preview/examples/SidebarPreview.tsx
+++ b/frontend/src/components-preview/examples/SidebarPreview.tsx
@@ -1,5 +1,5 @@
import { useState } from "react";
-import { ComponentApi } from "../api/ComponentApi";
+
import { Sidebar, SidebarAgentIcon, SidebarGroupTitle, SidebarItem, SidebarItemWithIcon } from "../../components/composites/Sidebar";
import { Button } from "../../components/primitives/Button";
import { Menu } from "../../components/primitives/Menu";
@@ -47,25 +47,26 @@ export function SidebarPreview() {
return (
-
+
-
+
} data-state="hover">Agents
-
+
Recent
-
);
}
diff --git a/frontend/src/components-preview/examples/SliderPreview.tsx b/frontend/src/components-preview/examples/SliderPreview.tsx
index 94d8ca520..5031a71d6 100644
--- a/frontend/src/components-preview/examples/SliderPreview.tsx
+++ b/frontend/src/components-preview/examples/SliderPreview.tsx
@@ -1,19 +1,22 @@
import { useState } from "react";
import { Slider } from "../../components/primitives/Slider";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./SliderPreview.css";
export function SliderPreview() {
const [volume, setVolume] = useState(65);
return (
- Slider
-
-
+
Default
+
+
+ Decimal Step
value.toFixed(2)} />
+
+
-
+
);
}
diff --git a/frontend/src/components-preview/examples/SwitchPreview.tsx b/frontend/src/components-preview/examples/SwitchPreview.tsx
index 08c229245..3028b56f4 100644
--- a/frontend/src/components-preview/examples/SwitchPreview.tsx
+++ b/frontend/src/components-preview/examples/SwitchPreview.tsx
@@ -1,13 +1,11 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Switch } from "../../components/primitives/Switch";
import "./SwitchPreview.css";
export function SwitchPreview() {
return (
);
}
diff --git a/frontend/src/components-preview/examples/TableHeaderControlsPreview.tsx b/frontend/src/components-preview/examples/TableHeaderControlsPreview.tsx
index 0ae30a0ff..5619ccd49 100644
--- a/frontend/src/components-preview/examples/TableHeaderControlsPreview.tsx
+++ b/frontend/src/components-preview/examples/TableHeaderControlsPreview.tsx
@@ -40,7 +40,7 @@ export function TableHeaderControlsPreview() {
];
return
-
+
点击 Score 箭头切换升序、降序和原顺序;Result 可筛选 Pass 或 Fail
row.id} minWidth={640} maxHeight={320} hideScrollbar={false} emptyContent="No matching cases" />
{visibleRows.length} / {cases.length} cases · {direction === "asc" ? "Score ascending" : direction === "desc" ? "Score descending" : "Original order"}
diff --git a/frontend/src/components-preview/examples/TablePreview.tsx b/frontend/src/components-preview/examples/TablePreview.tsx
index 2f119ea30..9cf59ddaf 100644
--- a/frontend/src/components-preview/examples/TablePreview.tsx
+++ b/frontend/src/components-preview/examples/TablePreview.tsx
@@ -3,7 +3,7 @@ import { PlusIcon } from "../../components/icons/PlusIcon";
import { Button } from "../../components/primitives/Button";
import { InputWithTailIcon } from "../../components/primitives/InputWithTailIcon";
import { Table, TableCellText, TableStatus, type TableColumn } from "../../components/primitives/Table";
-import { ComponentApi } from "../api/ComponentApi";
+
import { TableHeaderControlsPreview } from "./TableHeaderControlsPreview";
import "./TablePreview.css";
@@ -98,11 +98,11 @@ export function TablePreview() {
];
return
- Table
+ Default
row.id} />
- 搜索、长内容与操作
+ 搜索、长内容与操作
标题与描述分层展示,长文本可换行或省略;滚动时固定表头、首列和操作列
-
;
}
diff --git a/frontend/src/components-preview/examples/TextareaPreview.tsx b/frontend/src/components-preview/examples/TextareaPreview.tsx
index 4aea5b5c7..87dd141a5 100644
--- a/frontend/src/components-preview/examples/TextareaPreview.tsx
+++ b/frontend/src/components-preview/examples/TextareaPreview.tsx
@@ -1,11 +1,10 @@
-import { ComponentApi } from "../api/ComponentApi";
import { Textarea } from "../../components/primitives/Textarea";
import "./TextareaPreview.css";
export function TextareaPreview() {
return (
);
}
diff --git a/frontend/src/components-preview/examples/ToastPreview.css b/frontend/src/components-preview/examples/ToastPreview.css
index ec584ec0f..6a54a9a85 100644
--- a/frontend/src/components-preview/examples/ToastPreview.css
+++ b/frontend/src/components-preview/examples/ToastPreview.css
@@ -1,3 +1,3 @@
.toast-preview__triggers { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.toast-preview__hint { max-width: 728px; margin: 12px 0 24px; color: var(--studio-text-secondary); font-size: 13px; line-height: 20px; }
-.toast-preview__states { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); gap: 12px; max-width: 892px; }
+.toast-preview__states { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; max-width: 892px; }
diff --git a/frontend/src/components-preview/examples/ToastPreview.tsx b/frontend/src/components-preview/examples/ToastPreview.tsx
index a6d0863a7..fb7925960 100644
--- a/frontend/src/components-preview/examples/ToastPreview.tsx
+++ b/frontend/src/components-preview/examples/ToastPreview.tsx
@@ -1,6 +1,6 @@
import { Button } from "../../components/primitives/Button";
import { Toast, ToastProvider, useToast, type ToastVariant } from "../../components/primitives/Toast";
-import { ComponentApi } from "../api/ComponentApi";
+
import "./ToastPreview.css";
const variants: { variant: ToastVariant; label: string; title: string; description: string }[] = [
@@ -36,12 +36,15 @@ function ToastExamples() {
通知在顶部居中显示,间距 8px,4 秒后自动关闭;悬停或键盘聚焦时暂停,带操作示例保持显示
- {variants.map(({ variant, title, description }) => )}
+ {variants.map(({ variant, label, title, description }) => )}
>;
}
-function ToastHookApi() {
+export function ToastHookApi() {
return
useToast 方法
@@ -74,9 +77,7 @@ function ToastHookApi() {
export function ToastPreview() {
return ;
}
diff --git a/frontend/src/components-preview/examples/TokensPreview.css b/frontend/src/components-preview/examples/TokensPreview.css
index 9090a8696..1e75ecdfc 100644
--- a/frontend/src/components-preview/examples/TokensPreview.css
+++ b/frontend/src/components-preview/examples/TokensPreview.css
@@ -7,7 +7,7 @@
.tokens-preview-token { min-width: 0; padding: 16px; border: 1px solid var(--studio-border-subtle); border-radius: var(--studio-radius-lg); background: var(--studio-bg-panel); }
.tokens-preview-visual { display: flex; align-items: center; min-height: 56px; margin-bottom: 16px; overflow: hidden; }
.tokens-preview-swatch { width: 100%; height: 56px; border: 1px solid var(--studio-border-subtle); border-radius: var(--studio-radius-md); }
-.tokens-preview-token h4 { margin: 0; font-size: 14px; font-weight: 400; line-height: 22px; }
+.tokens-preview-token h3 { margin: 0; font-size: 14px; font-weight: 400; line-height: 22px; }
.tokens-preview-name { margin: 4px 0 12px; color: var(--studio-text-tertiary); font-size: 12px; line-height: 18px; overflow-wrap: anywhere; }
.tokens-preview-values { display: flex; flex-direction: column; gap: 6px; margin: 0; font-size: 12px; line-height: 18px; }
.tokens-preview-values > div { display: flex; gap: 8px; }
diff --git a/frontend/src/components-preview/examples/TokensPreview.tsx b/frontend/src/components-preview/examples/TokensPreview.tsx
index 3dcfe2147..5437edcc9 100644
--- a/frontend/src/components-preview/examples/TokensPreview.tsx
+++ b/frontend/src/components-preview/examples/TokensPreview.tsx
@@ -21,13 +21,12 @@ function TokenVisual({ token }: { token: StudioToken }) {
export function TokensPreview() {
const [motionActive, setMotionActive] = useState(false);
return (
-
- Tokens
+
统一管理组件的视觉参数,切换主题查看深浅模式
{studioTokenGroups.map((group) => (
-
{group.label}
+
{group.label}
{group.description}
{group.category === "motion" ? : null}
@@ -42,7 +41,7 @@ export function TokensPreview() {
style={token.name.includes("duration") ? { transitionDuration: `var(${token.name})` } : { transitionTimingFunction: `var(${token.name})` }}
/> : null}
- {token.label}
+ {token.label}
{token.name}
{token.category === "color" ? - Dark
- {token.dark}
- Light
- {token.light}
: {token.value}
}
diff --git a/frontend/src/components-preview/examples/UnderlineTabsPreview.tsx b/frontend/src/components-preview/examples/UnderlineTabsPreview.tsx
index 184b50a82..fed730b66 100644
--- a/frontend/src/components-preview/examples/UnderlineTabsPreview.tsx
+++ b/frontend/src/components-preview/examples/UnderlineTabsPreview.tsx
@@ -1,4 +1,3 @@
-import { ComponentApi } from "../api/ComponentApi";
import { useState } from "react";
import { UnderlineTabs } from "../../components/primitives/UnderlineTabs";
import "./UnderlineTabsPreview.css";
@@ -19,7 +18,7 @@ export function UnderlineTabsPreview() {
const [value, setValue] = useState("configuration");
return (
- Tab with underline
+ Underline
(
))}
- 多选项横向滚动
+ 多选项横向滚动
({ value, label })),
{ value: "logs", label: "Logs" }, { value: "metrics", label: "Metrics" },
{ value: "permissions", label: "Permissions" }, { value: "settings", label: "Settings" }
]} aria-label="Scrollable agent sections" />
-
);
}
diff --git a/frontend/src/components-preview/foundation/Specification.md b/frontend/src/components-preview/foundation/Specification.md
new file mode 100644
index 000000000..d0c4430de
--- /dev/null
+++ b/frontend/src/components-preview/foundation/Specification.md
@@ -0,0 +1,88 @@
+# 前端开发规范
+
+AI 在规划、开发和检查前端页面、组件、布局与交互时,必须遵循本规范
+
+## 适用范围
+
+火山引擎与 BytePlus 使用同一套要求
+
+**必须、禁止**表示强制要求;**优先**表示默认选择,只有已有能力不能满足需求时才考虑其他实现
+
+用户当前明确要求优先于本规范,本规范优先于通用设计建议与示例写法;用户指定的例外仅适用于指定范围,不能扩展到其他页面或组件
+
+## 文案分隔
+
+**S1 | 禁止使用中点「·」连接界面文字,需要文本分隔符时优先使用竖线「|」**
+
+- 适用于标题、描述、标签、状态、元信息和浏览器标题中的文字拼接
+- 竖线两侧保留空格,例如「Agent A | 运行中」
+- 已能通过留白、分组或换行表达关系时,不额外插入分隔符
+
+## 复用组件
+
+**S2 | 优先使用组件库中的已有组件,通过公开属性和插槽完成配置**
+
+- 开发前先查看 Base、Block 中的现有实现、属性定义和预览示例,再决定是否新增组件
+- 引用组件时,禁止通过大量样式覆盖、深层选择器、内联样式或复制源码,将其改成另一套外观;只有用户明确要求定制时才允许,并限制在指定范围内
+- 使用已有的尺寸、变种和主题选项属于正常配置;页面容器负责排布,不应重新定义组件内部的字号、颜色、圆角和动效
+- 现有能力不足时,先说明缺口并提出组件级扩展方案,不能在页面里维护一套近似实现
+
+## 复用布局
+
+**S3 | 优先选择已有 Layout,再组合 Block 与 Base 组件**
+
+- 先检查 App Layout、Detail Page、Resource Page、Card Layout、Modal Layout 等已有布局是否适用
+- 复用布局的内容区域、插槽、对齐方式、间距、滚动边界和响应式行为,避免重新拼装近似的侧栏、头部与主体结构
+- 只有已有布局无法承载需求时才设计新布局,并说明现有布局缺少什么能力
+
+## 保留组件完整行为
+
+**S4 | 复用结果必须与组件原有的外观、属性语义和交互行为一致**
+
+- 阅读完整接口和默认行为,接入当前场景所需的属性、事件回调、引用、插槽与状态,不只复制静态外观
+- 保留加载、禁用、错误、选中、展开与收起状态,以及已有动画、滚动、焦点、键盘操作和无障碍语义
+- 不必传入所有可选属性,但不得改变其默认含义,也不得遗漏需求需要的能力
+- 检查时对照组件库的真实示例,确认尺寸、字号、图标、圆角、状态切换和动效保持一致
+
+## 字体
+
+**S5 | 没有用户明确的特殊说明时,禁止使用代码字体或等宽字体**
+
+- 界面文字继承现有 UI 字体,不为单个页面、字段或组件擅自切换字体
+- 不能因为内容是 ID、版本号、模型名、文件路径、命令或日志,就自动把它视为使用代码字体的例外
+- 用户明确要求代码字体时,仅在指定内容区域使用,不扩散到标题、标签、按钮或周边说明
+
+## 动效
+
+**S6 | 开发时主动考虑状态变化的过渡,避免内容生硬跳变**
+
+- 对新增内容、名称切换、展开与收起、加载与操作反馈,先检查已有组件是否提供动效,并完整复用
+- 需要新增动效时,优先使用已有动效参数和实现方式,让变化的顺序清楚,例如先展开空间再渐显内容、名称向上淡出再滑入下一项
+- 加载状态可使用循环运动表达正在执行;静态内容不应为了装饰而持续运动
+- 动效不能阻塞操作,应能响应中途的状态变化;尊重减少动态效果偏好,降级后仍能清楚表达状态
+
+## 产品文案
+
+**S7 | 提示词中的设计约束必须落实为产品行为,禁止将其复述为界面说明**
+
+- 标题、描述、按钮、提示、空状态和错误信息只表达用户任务、业务含义、当前状态和可执行的下一步
+- 用户提示词中的「显示什么」「不要显示什么」「如何布局」属于开发指令,不是待展示的产品内容;不能把执行这些指令的结果写进标题、简介、表格说明或提示
+- 例如,用户要求「不要显示用户头像」时,应直接省略头像,禁止额外写「未显示用户头像」「已隐藏用户头像」;没有必要的产品信息就不添加说明
+- 不为解释布局、组件选择、字号或动效的实现方式添加说明,也不把需求原话改写成页面副标题;只有用户明确指定为产品文案的内容才按文案处理
+- 每条文案都应回答「用户需要知道什么」或「用户可以做什么」,不能只说明「开发者按什么要求做了什么」
+
+## 视觉与光学对齐
+
+**S8 | 所有元素都必须检查几何对齐和光学对齐,以实际视觉效果为准**
+
+- 先确定共享的左、右、上、下边缘、中心线和文字基线,标题、正文、表单、按钮、图标、分隔线与并列容器都应遵循对应的对齐关系
+- 对齐不仅看容器尺寸和坐标,还要检查图形的可见轮廓、视觉重心、内部留白,以及图标与文字的实际搭配;数学居中不等于视觉居中
+- 优先通过已有布局、间距规则和组件本身修正偏差,确有光学误差时仅对具体元素做有依据的局部校正,不在页面中堆叠补偿偏移
+- 检查不同字号、图标尺寸、文字长度、屏幕宽度和交互状态下的真实渲染,避免默认状态对齐、变化后错位
+
+## 执行与检查
+
+1. 开发前列出可复用的布局、组件及其属性、状态和动效,确认是否存在用户明确指定的例外
+2. 实现时先使用公开配置;遇到能力缺口先说明,不用大量页面样式覆盖掩盖问题
+3. 完成后逐项检查 S1 至 S8,核对文字分隔、字体、组件完整性、状态过渡、产品文案,以及所有元素的视觉与光学对齐
+4. 交付时说明复用了什么、有哪些明确例外、实际检查了哪些状态,不把未验证内容写成已通过
diff --git a/frontend/src/components-preview/foundation/SpecificationPreview.css b/frontend/src/components-preview/foundation/SpecificationPreview.css
new file mode 100644
index 000000000..d57c08c5e
--- /dev/null
+++ b/frontend/src/components-preview/foundation/SpecificationPreview.css
@@ -0,0 +1,23 @@
+.specification-preview {
+ max-width: 800px;
+ color: var(--studio-text-primary);
+ font-family: var(--studio-font-family-ui);
+ font-size: var(--studio-font-size-md, 14px);
+ line-height: var(--studio-line-height-md, 22px);
+ overflow-wrap: anywhere;
+}
+
+.specification-preview__actions {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: var(--studio-space-4, 12px);
+ margin-bottom: var(--studio-space-7, 24px);
+}
+
+.specification-preview__actions > span { color: var(--studio-text-secondary); }
+.specification-preview p { margin: 0 0 var(--studio-space-4, 12px); }
+.specification-preview strong { font-weight: 500; }
+.specification-preview ul, .specification-preview ol { margin: 0; padding-left: var(--studio-space-7, 24px); }
+.specification-preview li + li { margin-top: var(--studio-space-3, 8px); }
+.components-preview-examples .specification-preview [data-preview-heading] { margin-top: var(--studio-space-8, 32px); }
diff --git a/frontend/src/components-preview/foundation/SpecificationPreview.tsx b/frontend/src/components-preview/foundation/SpecificationPreview.tsx
new file mode 100644
index 000000000..56d8e1be5
--- /dev/null
+++ b/frontend/src/components-preview/foundation/SpecificationPreview.tsx
@@ -0,0 +1,42 @@
+import { useState } from "react";
+import ReactMarkdown from "react-markdown";
+import { Button } from "../../components/primitives/Button";
+import specification from "./Specification.md?raw";
+import "./SpecificationPreview.css";
+
+const headingIds: Record = {
+ 适用范围: "spec-scope",
+ 文案分隔: "spec-text-separators",
+ 复用组件: "spec-components",
+ 复用布局: "spec-layouts",
+ 保留组件完整行为: "spec-behavior",
+ 字体: "spec-typography",
+ 动效: "spec-motion",
+ 产品文案: "spec-product-copy",
+ 视觉与光学对齐: "spec-alignment",
+ 执行与检查: "spec-checks",
+};
+
+export function SpecificationPreview() {
+ const [copyStatus, setCopyStatus] = useState("");
+
+ async function copySpecification() {
+ try {
+ await navigator.clipboard.writeText(specification);
+ setCopyStatus("已复制,可直接提供给 AI");
+ } catch {
+ setCopyStatus("复制失败,请重试或手动选择下方文字");
+ }
+ }
+
+ return
+
+
+ {copyStatus}
+
+ null,
+ h2: ({ children }) => {children}
,
+ }}>{specification}
+ ;
+}
diff --git a/frontend/src/components-preview/navigation.ts b/frontend/src/components-preview/navigation.ts
new file mode 100644
index 000000000..afa23d6f7
--- /dev/null
+++ b/frontend/src/components-preview/navigation.ts
@@ -0,0 +1,27 @@
+type PreviewLocation = { component: string; section: string };
+
+const aliases: Record = {
+ progress: { component: "long-running-state", section: "" },
+ "input-header-icon": { component: "input", section: "input-with-header-icon-preview-title" },
+ "input-tail-icon": { component: "input", section: "input-with-tail-icon-preview-title" },
+ "underline-tabs": { component: "tabs", section: "underline-tabs-preview-title" },
+ "pill-tabs": { component: "tabs", section: "preview-pill-tabs-title" },
+ "filter-tabs": { component: "tabs", section: "filter-tabs-preview-title" },
+ "glass-tabs": { component: "tabs", section: "preview-glass-tabs-title" },
+ "resource-card": { component: "card", section: "preview-resource-card-title" },
+ "info-card": { component: "card", section: "info-card-preview-title" },
+ "promo-card": { component: "card", section: "preview-promo-card-title" },
+ "glass-icon-button": { component: "button", section: "glass-icon-button-preview-title" },
+ "form-label/form-label-row-title": { component: "form-label-row", section: "form-label-row-title" },
+ "button/glass-icon-button-group-preview-title": { component: "glass-icon-button-group", section: "glass-icon-button-group-preview-title" },
+ "card/card-layout-preview-title": { component: "card-layout", section: "card-layout-preview-title" },
+};
+
+export function resolvePreviewLocation(hash: string): PreviewLocation {
+ const path = hash.replace(/^#/, "");
+ if (Object.prototype.hasOwnProperty.call(aliases, path)) return aliases[path];
+ const [component = "", section = ""] = path.split("/");
+ return Object.prototype.hasOwnProperty.call(aliases, component)
+ ? { ...aliases[component], section: section || aliases[component].section }
+ : { component: component || "button", section };
+}
diff --git a/frontend/src/components/ai-app/ConversationFlow/ConversationBlocks.tsx b/frontend/src/components/ai-app/ConversationFlow/ConversationBlocks.tsx
index c3158fabe..03b1a1902 100644
--- a/frontend/src/components/ai-app/ConversationFlow/ConversationBlocks.tsx
+++ b/frontend/src/components/ai-app/ConversationFlow/ConversationBlocks.tsx
@@ -9,6 +9,7 @@ import { ConversationAuthorizationIcon, ConversationCancelIcon, ConversationChec
import { ConversationMarkdown, ConversationVisualization } from "./ConversationRichContent";
import { useConversationElapsedTime } from "./ConversationTiming";
import { ConversationMedia } from "./ConversationMedia";
+import { ConversationStepEntrance } from "./ConversationStepEntrance";
export function formatConversationDuration(value: number | undefined, running = false): string | null {
if (value === undefined || !Number.isFinite(value) || value < 0) return null;
@@ -61,7 +62,7 @@ export function ConversationStepView({ step }: { step: ConversationStep }) {
setOpen(next);
if (next) setHasOpened(true);
}
- return
+ return
: } />}>
@@ -73,13 +74,13 @@ export function ConversationStepView({ step }: { step: ConversationStep }) {
>)}
- ;
+ ;
}
function HandoffBlock({ block }: { block: ConversationHandoffBlock }) {
const [open, setOpen] = useState(block.defaultOpen ?? false);
const [hasOpened, setHasOpened] = useState(block.defaultOpen ?? false);
- return
+ return
{ setOpen(next); if (next) setHasOpened(true); }}
label={} target={block.toAgent} />}>
@@ -93,7 +94,7 @@ function HandoffBlock({ block }: { block: ConversationHandoffBlock }) {
>}
- ;
+ ;
}
function PlanBlock({ block }: { block: ConversationPlanBlock }) {
diff --git a/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.css b/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.css
index 0149acb62..4feb6cf64 100644
--- a/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.css
+++ b/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.css
@@ -43,17 +43,21 @@
border-radius: var(--studio-radius-xl);
background: var(--studio-bg-secondary);
}
-.studio-conversation-message[data-role="user"] .studio-conversation-message__body > .studio-conversation-blocks { gap: 12px; }
-.studio-conversation-message[data-role="user"] .studio-conversation-message__body > .studio-conversation-blocks > .studio-conversation-rich-markdown { margin: 0; }
-.studio-conversation-message__steps { display: grid; gap: 4px; margin-bottom: 20px; }
+.studio-conversation-message[data-role="user"] .studio-conversation-message__body > .studio-conversation-blocks { --studio-conversation-block-gap: 12px; }
+.studio-conversation-message[data-role="user"] .studio-conversation-message__body > .studio-conversation-blocks > .studio-conversation-rich-markdown:first-child { margin: 0; }
+.studio-conversation-message__steps { display: grid; margin-bottom: 20px; }
.studio-conversation-message__blocks { display: grid; gap: 16px; }
-.studio-conversation-blocks { display: grid; gap: 16px; min-width: 0; }
-.studio-conversation-blocks > .studio-conversation-step + .studio-conversation-step { margin-top: -12px; }
+.studio-conversation-blocks { --studio-conversation-block-gap: 16px; display: grid; min-width: 0; }
+.studio-conversation-blocks > * + * { margin-top: var(--studio-conversation-block-gap); }
+.studio-conversation-blocks > .studio-conversation-step { --studio-conversation-entry-gap: var(--studio-conversation-block-gap); }
+.studio-conversation-blocks > .studio-conversation-step + .studio-conversation-step,
+.studio-conversation-message__steps > .studio-conversation-step + .studio-conversation-step,
+.studio-conversation-handoff__steps > .studio-conversation-step + .studio-conversation-step { --studio-conversation-entry-gap: 4px; margin-top: 4px; }
.studio-conversation-block__title { margin: 0 0 8px; color: var(--studio-text-secondary); font: inherit; font-size: 13px; }
.studio-conversation-step__target { color: var(--studio-text-primary); min-width: 0; }
.studio-conversation-handoff__route { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--studio-text-secondary); font-size: 12px; }
.studio-conversation-handoff__route svg { width: 14px; height: 14px; }
-.studio-conversation-handoff__steps { display: grid; gap: 4px; border-left: 1px solid var(--studio-border-subtle); padding-left: 16px; }
+.studio-conversation-handoff__steps { display: grid; border-left: 1px solid var(--studio-border-subtle); padding-left: 16px; }
.studio-conversation-handoff__content { color: var(--studio-text-secondary); font-size: 13px; }
.studio-conversation-plan__items { display: grid; gap: 6px; list-style: none; margin: 0; padding: 0; }
.studio-conversation-plan__item { display: flex; align-items: baseline; gap: 8px; color: var(--studio-text-secondary); font-size: 13px; }
@@ -99,7 +103,24 @@
.studio-conversation-invocation { display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px; color: var(--studio-text-secondary); }
.studio-conversation-invocation > span { border: 1px solid var(--studio-border-subtle); border-radius: 6px; padding: 2px 8px; }
.studio-conversation-message[data-role="system"] { display: block; color: var(--studio-text-tertiary); font-size: 12px; }
-.studio-conversation-step { min-width: 0; }
+.studio-conversation-step { --studio-conversation-entry-gap: 0px; display: grid; grid-template-rows: 1fr; align-self: start; min-width: 0; }
+.studio-conversation-step:first-child { --studio-conversation-entry-gap: 0px; }
+.studio-conversation-step__entry-content { min-width: 0; min-height: 0; }
+.studio-conversation-step[data-entering] {
+ animation: studio-conversation-step-space-in 180ms cubic-bezier(.22, 1, .36, 1) both;
+}
+.studio-conversation-step[data-entering] > .studio-conversation-step__entry-content {
+ overflow: hidden;
+ animation: studio-conversation-step-content-in 180ms ease-out 180ms both;
+}
+@keyframes studio-conversation-step-space-in {
+ from { grid-template-rows: 0fr; margin-top: 0; }
+ to { grid-template-rows: 1fr; margin-top: var(--studio-conversation-entry-gap); }
+}
+@keyframes studio-conversation-step-content-in {
+ from { opacity: 0; }
+ to { opacity: 1; }
+}
.studio-conversation-step__dropdown,
.studio-conversation-step__io-dropdown { width: 100%; min-width: 0; }
.studio-conversation-step__dropdown > .studio-dropdown__trigger,
@@ -125,8 +146,8 @@
.studio-conversation-step__status,
.studio-conversation-step__duration { flex: none; color: var(--studio-text-tertiary); font-size: 12px; white-space: nowrap; }
.studio-conversation-step__duration { font-variant-numeric: tabular-nums; }
-.studio-conversation-step[data-status="error"] > .studio-dropdown > .studio-dropdown__trigger .studio-conversation-step__icon,
-.studio-conversation-step[data-status="error"] > .studio-dropdown > .studio-dropdown__trigger .studio-conversation-step__status { color: var(--studio-danger); }
+.studio-conversation-step[data-status="error"] > .studio-conversation-step__entry-content > .studio-dropdown > .studio-dropdown__trigger .studio-conversation-step__icon,
+.studio-conversation-step[data-status="error"] > .studio-conversation-step__entry-content > .studio-dropdown > .studio-dropdown__trigger .studio-conversation-step__status { color: var(--studio-danger); }
.studio-conversation-step__details { display: grid; gap: 12px; padding-bottom: 12px; min-width: 0; }
.studio-conversation-step__reasoning { color: var(--studio-text-secondary); white-space: pre-wrap; }
.studio-conversation-step__reasoning > :first-child { margin-top: 0; }
@@ -153,6 +174,11 @@
.studio-conversation-message__action-status { min-width: 0; color: var(--studio-text-secondary); font-size: 12px; line-height: 20px; }
.studio-conversation-message__action-status[data-error="true"] { color: var(--studio-danger); }
.studio-conversation-flow__sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
+@media (prefers-reduced-motion: reduce) {
+ .studio-conversation-step[data-entering],
+ .studio-conversation-step[data-entering] > .studio-conversation-step__entry-content { animation: none; }
+ .studio-conversation-step[data-entering] > .studio-conversation-step__entry-content { overflow: visible; }
+}
@container studio-conversation (max-width: 480px) {
.studio-conversation-message[data-role="user"] { max-width: 92%; }
.studio-conversation-message__footer { gap: 8px; }
diff --git a/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.tsx b/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.tsx
index 679a78b54..df67fc06d 100644
--- a/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.tsx
+++ b/frontend/src/components/ai-app/ConversationFlow/ConversationFlow.tsx
@@ -6,6 +6,7 @@ import type { ConversationAssistantMessage, ConversationFlowProps, ConversationM
import { ConversationCheckIcon, ConversationCopyIcon, ConversationDislikeIcon, ConversationErrorIcon, ConversationLikeIcon, ConversationRetryIcon, ConversationStopIcon } from "./ConversationFlowIcons";
import { ConversationBlocks, ConversationStepView, conversationStatusLabels, formatConversationDuration } from "./ConversationBlocks";
import { ConversationMessageTimingScope, ConversationTimingProvider, useConversationElapsedTime } from "./ConversationTiming";
+import { ConversationMessageEntranceScope, ConversationStepEntranceProvider } from "./ConversationStepEntrance";
import "./ConversationFlow.css";
function MessageMetrics({ message }: { message: ConversationAssistantMessage }) {
@@ -94,13 +95,13 @@ function MessageView({ message, onRetry, onFeedback, onStop }: { message: Conver
}
export function ConversationFlow({ messages, onRetry, onFeedback, onStop, height = 600, scrollAreaProps, className = "", style, ...props }: ConversationFlowProps) {
- return
+ return
{messages.map(message =>
-
+
)}
-
;
+
;
}
diff --git a/frontend/src/components/ai-app/ConversationFlow/ConversationRichContent.css b/frontend/src/components/ai-app/ConversationFlow/ConversationRichContent.css
index aac608589..c4431bde6 100644
--- a/frontend/src/components/ai-app/ConversationFlow/ConversationRichContent.css
+++ b/frontend/src/components/ai-app/ConversationFlow/ConversationRichContent.css
@@ -73,7 +73,6 @@
line-height: 22px;
opacity: 1;
}
-.studio-conversation-rich-visual .studio-info-card__actions .studio-button svg { width: 14px; height: 14px; }
.studio-conversation-rich-visual__body.studio-info-card__body { gap: 0; font-family: inherit; }
.studio-conversation-rich-visual__panel { min-width: 0; padding-top: 12px; }
.studio-conversation-rich-visual__panel > .studio-code-block { width: 100%; min-width: 0; margin: 0; }
@@ -98,7 +97,6 @@
.studio-conversation-rich-visual__mermaid > svg { width: 100%; max-width: none !important; height: auto; }
.studio-conversation-rich-visual__zoom { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 8px; }
.studio-conversation-rich-visual__zoom > span { min-width: 36px; color: var(--studio-text-secondary); font-size: 12px; text-align: center; font-variant-numeric: tabular-nums; }
-.studio-conversation-rich-visual__zoom svg { width: 14px; height: 14px; }
.studio-conversation-rich-visual__modal.studio-modal-layout { width: min(1040px, calc(100vw - 48px)); height: auto; padding-bottom: 24px; }
.studio-conversation-rich-visual__modal .studio-modal-layout__footer { display: none; }
.studio-conversation-rich-visual__modal .studio-modal-layout__body { min-height: 0; }
diff --git a/frontend/src/components/ai-app/ConversationFlow/ConversationStepEntrance.tsx b/frontend/src/components/ai-app/ConversationFlow/ConversationStepEntrance.tsx
new file mode 100644
index 000000000..cdf664fed
--- /dev/null
+++ b/frontend/src/components/ai-app/ConversationFlow/ConversationStepEntrance.tsx
@@ -0,0 +1,77 @@
+import { createContext, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, type ReactNode } from "react";
+import type { ConversationBlock, ConversationMessage, ConversationStatus, ConversationStep } from "./ConversationFlow.types";
+
+interface EntranceContext {
+ seen: Set;
+ path: readonly string[];
+}
+
+const Context = createContext(null);
+
+function rememberSteps(seen: Set, path: readonly string[], blocks: readonly (ConversationBlock | ConversationStep)[]) {
+ for (const block of blocks) {
+ if (block.type !== "reasoning" && block.type !== "tool" && block.type !== "handoff") continue;
+ const stepPath = [...path, block.id];
+ seen.add(JSON.stringify(stepPath));
+ if (block.type === "handoff" && block.steps) rememberSteps(seen, stepPath, block.steps);
+ }
+}
+
+function rememberMessages(seen: Set, messages: readonly ConversationMessage[]) {
+ for (const message of messages) {
+ rememberSteps(seen, [message.id], message.blocks ?? (message.role === "assistant" ? message.steps : undefined) ?? []);
+ }
+}
+
+export function ConversationStepEntranceProvider({ messages, children }: { messages: readonly ConversationMessage[]; children: ReactNode }) {
+ const registry = useRef | null>(null);
+ if (registry.current === null) {
+ registry.current = new Set();
+ rememberMessages(registry.current, messages);
+ }
+ const seen = registry.current;
+ const value = useMemo(() => ({ seen, path: [] }), [seen]);
+ // Retain collapsed steps, but forget removed runs so a retry can reuse their IDs
+ useLayoutEffect(() => {
+ seen.clear();
+ rememberMessages(seen, messages);
+ }, [seen, messages]);
+ return {children};
+}
+
+export function ConversationMessageEntranceScope({ messageId, children }: { messageId: string; children: ReactNode }) {
+ const parent = useContext(Context);
+ const value = useMemo(() => parent && ({ seen: parent.seen, path: [messageId] }), [parent, messageId]);
+ return {children};
+}
+
+export function ConversationStepEntrance({ stepId, type, status, className = "", children }: {
+ stepId: string;
+ type: "reasoning" | "tool" | "handoff";
+ status: ConversationStatus;
+ className?: string;
+ children: ReactNode;
+}) {
+ const parent = useContext(Context);
+ const value = useMemo(() => parent && ({ seen: parent.seen, path: [...parent.path, stepId] }), [parent, stepId]);
+ const [entering, setEntering] = useState(() => Boolean(value && !value.seen.has(JSON.stringify(value.path)) &&
+ (typeof window === "undefined" || !window.matchMedia("(prefers-reduced-motion: reduce)").matches)));
+
+ useEffect(() => {
+ if (!entering) return;
+ const preference = window.matchMedia("(prefers-reduced-motion: reduce)");
+ const stopForReducedMotion = () => { if (preference.matches) setEntering(false); };
+ stopForReducedMotion();
+ preference.addEventListener("change", stopForReducedMotion);
+ return () => preference.removeEventListener("change", stopForReducedMotion);
+ }, [entering]);
+
+ return
+ setEntering(false)} onPointerDownCapture={() => setEntering(false)}>
+
{
+ if (event.target === event.currentTarget && event.animationName === "studio-conversation-step-content-in") setEntering(false);
+ }}>{children}
+
+ ;
+}
diff --git a/frontend/src/components/ai-app/ConversationFlow/README.md b/frontend/src/components/ai-app/ConversationFlow/README.md
index ab85e87cc..390acfef9 100644
--- a/frontend/src/components/ai-app/ConversationFlow/README.md
+++ b/frontend/src/components/ai-app/ConversationFlow/README.md
@@ -40,6 +40,8 @@ const messages: ConversationMessage[] = [
`messages` 与其中的 `blocks` 都按传入顺序展示,稳定的 id 用于保留展开状态
`blocks` 优先于兼容写法 `content` / `steps`;过程可独立折叠,工具的 Input / Output 可分别收起
+新增步骤先展开所需空间,再渐显内容;已有步骤更新状态或展开历史详情时不重复播放,移除后重新追加的步骤可以再次进场
+减少动态效果时直接显示,键盘聚焦或按下新步骤时立即结束进场,保证交互内容可见
运行状态、授权结果和反馈由调用方更新,组件不推断过程或请求后端
运行中的整体执行时间与每个步骤独立刷新,不依赖流式内容或新事件触发渲染;TTFT、token 数和模型名称仍由调用方提供
diff --git a/frontend/src/components/composites/CodeBlock/CodeBlock.css b/frontend/src/components/composites/CodeBlock/CodeBlock.css
index 20cb052d7..08ccffaad 100644
--- a/frontend/src/components/composites/CodeBlock/CodeBlock.css
+++ b/frontend/src/components/composites/CodeBlock/CodeBlock.css
@@ -17,17 +17,7 @@
line-height: 22px;
color: var(--studio-text-input, #c2c5cc);
}
-.studio-code-block__header button {
- display: flex; align-items: center; justify-content: center;
- width: 32px; height: 32px; padding: 0; border: 0; border-radius: 8px;
- background: transparent; cursor: pointer;
-}
-.studio-code-block__header img { width: 16px; height: 16px; }
.studio-code-block__actions { display: flex; flex: none; align-items: center; gap: 4px; }
-.studio-code-block__actions button { color: var(--studio-text-secondary); transition: background-color 120ms ease-out; }
-.studio-code-block__actions button:hover:not(:disabled) { background: var(--studio-fill-hover); }
-.studio-code-block__actions button:focus-visible { outline: 1px solid var(--studio-focus-ring); outline-offset: 1px; }
-.studio-code-block__actions button:disabled { cursor: not-allowed; opacity: .4; }
.studio-code-block__viewport { height: 780px; overflow: auto; scrollbar-width: none; border-radius: 4px; }
.studio-code-block__viewport::-webkit-scrollbar { display: none; }
.studio-code-block pre {
@@ -44,7 +34,6 @@
.studio-code-block[data-word-wrap] pre { width: 100%; min-width: 0; }
.studio-code-block[data-word-wrap] .studio-code-block__line { height: auto; min-height: 19.5px; }
.studio-code-block[data-word-wrap] .studio-code-block__text { min-width: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
-@media (prefers-reduced-motion: reduce) { .studio-code-block__actions button { transition: none; } }
.studio-code-block__token--comment { color: var(--studio-code-comment, #7f848e); }
.studio-code-block__token--keyword { color: var(--studio-code-keyword, #c678dd); }
.studio-code-block__token--string { color: var(--studio-code-string, #98c379); }
diff --git a/frontend/src/components/composites/CodeBlock/CodeBlock.tsx b/frontend/src/components/composites/CodeBlock/CodeBlock.tsx
index 6070e3689..12cf56d7e 100644
--- a/frontend/src/components/composites/CodeBlock/CodeBlock.tsx
+++ b/frontend/src/components/composites/CodeBlock/CodeBlock.tsx
@@ -1,7 +1,7 @@
import { useId, useMemo, useState, type HTMLAttributes, type ReactNode } from "react";
import { highlightCode } from "./highlightCode";
+import { Button } from "../../primitives/Button";
import { ScrollArea, type ScrollAreaProps } from "../../primitives/ScrollArea";
-import copyIcon from "./assets/copy.svg";
import "./CodeBlock.css";
export interface CodeBlockToken { text: string; color?: string }
@@ -22,6 +22,12 @@ export interface CodeBlockProps extends Omit, "title
scrollAreaProps?: Omit;
}
+function CopyIcon() {
+ return ;
+}
+
function physicalLines(lines: CodeBlockProps["lines"]): CodeBlockProps["lines"] {
const result: (string | CodeBlockToken[])[] = [];
for (const line of lines) {
@@ -72,7 +78,7 @@ export function CodeBlock({ title = "Request example", lines, language = "auto",
{title}
-
+
} />
{actions}
diff --git a/frontend/src/components/composites/FormLabelRow/FormLabelRow.css b/frontend/src/components/composites/FormLabelRow/FormLabelRow.css
index 6105adfc2..8887e3c63 100644
--- a/frontend/src/components/composites/FormLabelRow/FormLabelRow.css
+++ b/frontend/src/components/composites/FormLabelRow/FormLabelRow.css
@@ -7,17 +7,6 @@
max-width: 100%;
height: 22px;
}
-.studio-form-label-row__action.studio-button {
+.studio-form-label-row__action {
flex: 0 0 auto;
- justify-content: center;
- min-width: 72px;
- height: 32px;
- padding: 5px 12px;
- gap: 4px;
- border-radius: 8px;
- color: var(--studio-text-primary, #dbdee7);
- font-size: 13px;
- line-height: 16px;
}
-.studio-form-label-row__action .studio-button__icon { flex-basis: 16px; width: 16px; height: 16px; }
-.studio-form-label-row__action .studio-button__icon > img { display: block; width: 16px; height: 16px; }
diff --git a/frontend/src/components/composites/FormLabelRow/FormLabelRow.tsx b/frontend/src/components/composites/FormLabelRow/FormLabelRow.tsx
index 625e1595b..49b6ba8e8 100644
--- a/frontend/src/components/composites/FormLabelRow/FormLabelRow.tsx
+++ b/frontend/src/components/composites/FormLabelRow/FormLabelRow.tsx
@@ -1,7 +1,6 @@
import type { HTMLAttributes, ReactNode } from "react";
import { FormLabel } from "../../primitives/FormLabel";
import { Button } from "../../primitives/Button";
-import plus from "./assets/plus.svg";
import "./FormLabelRow.css";
export interface FormLabelRowProps extends HTMLAttributes {
@@ -14,9 +13,15 @@ export interface FormLabelRowProps extends HTMLAttributes {
actionDisabled?: boolean;
}
+function AddIcon() {
+ return ;
+}
+
export function FormLabelRow({ label, htmlFor, required, actionLabel = "Add", actionIcon, onAction, actionDisabled, className = "", ...props }: FormLabelRowProps) {
return
{label}
- } onClick={onAction} disabled={actionDisabled}>{actionLabel}
+ } onClick={onAction} disabled={actionDisabled}>{actionLabel}
;
}
diff --git a/frontend/src/components/composites/Header/Header.css b/frontend/src/components/composites/Header/Header.css
index e3c924da5..f2623a076 100644
--- a/frontend/src/components/composites/Header/Header.css
+++ b/frontend/src/components/composites/Header/Header.css
@@ -102,12 +102,3 @@
align-items: center;
gap: 12px;
}
-
-.studio-header .studio-button {
- width: 80px;
-}
-
-.studio-header .studio-header__chat {
- font-family: "PingFang SC", sans-serif;
- box-shadow: inset 0 0 0 0.5px var(--studio-text-subtle, #b8b7c3);
-}
diff --git a/frontend/src/components/composites/Header/Header.tsx b/frontend/src/components/composites/Header/Header.tsx
index 71cfef6ca..42e920914 100644
--- a/frontend/src/components/composites/Header/Header.tsx
+++ b/frontend/src/components/composites/Header/Header.tsx
@@ -55,6 +55,7 @@ export function Header({
>Edit
}
onClick={onChat}
diff --git a/frontend/src/components/composites/LongRunningState/LongRunningState.css b/frontend/src/components/composites/LongRunningState/LongRunningState.css
index 2d1bc433d..30901e4e6 100644
--- a/frontend/src/components/composites/LongRunningState/LongRunningState.css
+++ b/frontend/src/components/composites/LongRunningState/LongRunningState.css
@@ -1,233 +1,74 @@
.studio-long-running-state {
box-sizing: border-box;
- container: studio-long-running / inline-size;
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ gap: var(--studio-space-4, 12px);
width: 100%;
- max-width: 1120px;
min-width: 0;
- margin-inline: auto;
color: var(--studio-text-primary, #dbdee7);
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
+ font: inherit;
font-size: var(--studio-font-size-md, 14px);
- font-weight: 400;
- font-synthesis: none;
- font-optical-sizing: auto;
line-height: var(--studio-line-height-md, 22px);
+ text-align: left;
}
-.studio-long-running-state__layout {
- display: grid;
- grid-template-columns: 272px minmax(0, 1fr);
- align-items: stretch;
- gap: 56px;
-}
-
-.studio-long-running-state__navigation {
- display: flex;
- flex-direction: column;
- justify-content: center;
+.studio-long-running-state__title {
min-width: 0;
- padding-block: 24px;
-}
-
-.studio-long-running-state__overview {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- gap: 12px;
- margin: 0 12px 32px;
-}
-
-.studio-long-running-state__heading {
- margin: 0;
- color: var(--studio-text-strong);
- font-size: 26px;
- font-weight: 600;
- line-height: 32px;
- letter-spacing: -.6px;
- overflow-wrap: anywhere;
- text-wrap: balance;
+ height: var(--studio-line-height-md, 22px);
+ overflow: hidden;
+ font-size: inherit;
+ font-weight: 400;
}
-.studio-long-running-state__progress {
- color: var(--studio-text-secondary);
- font-size: var(--studio-font-size-sm, 13px);
- line-height: var(--studio-line-height-sm, 20px);
- font-variant-numeric: tabular-nums;
+.studio-long-running-state__title-text {
+ display: block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
-.studio-long-running-state__progress-track {
- display: block;
- width: 100%;
+.studio-long-running-state__bar {
height: 3px;
- margin-top: 4px;
overflow: hidden;
border-radius: var(--studio-radius-pill, 999px);
background: var(--studio-border-subtle);
}
-.studio-long-running-state__progress-track > span {
+.studio-long-running-state__bar-indicator {
display: block;
- width: 100%;
+ width: 32%;
height: 100%;
border-radius: inherit;
- background: var(--studio-success);
- transform-origin: left center;
+ background: var(--studio-text-primary);
+ opacity: 0;
}
-.studio-long-running-state__steps { margin: 0; padding: 0; list-style: none; }
-.studio-long-running-state__step { position: relative; min-width: 0; padding-bottom: 8px; }
-.studio-long-running-state__step:last-child { padding-bottom: 0; }
-
-.studio-long-running-state__connector {
- position: absolute;
- z-index: 1;
- top: 44px;
- bottom: -12px;
- left: 23.5px;
- width: 1px;
- overflow: hidden;
- background: var(--studio-border-subtle);
- pointer-events: none;
+.studio-long-running-state[data-state="running"] .studio-long-running-state__bar-indicator {
+ opacity: 1;
+ animation: studio-progress-slide 1.1s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}
-.studio-long-running-state__connector > span {
- display: block;
+
+.studio-long-running-state[data-state="complete"] .studio-long-running-state__bar-indicator {
width: 100%;
- height: 100%;
- background: color-mix(in srgb, var(--studio-success) 45%, var(--studio-border-subtle));
- transform-origin: center top;
+ opacity: 1;
+ background: var(--studio-success);
}
-.studio-long-running-state__header {
- position: relative;
- box-sizing: border-box;
- display: grid;
- grid-template-columns: 24px minmax(0, 1fr) 14px;
- align-items: start;
- gap: 12px;
+.studio-long-running-state__details {
width: 100%;
min-width: 0;
- min-height: 56px;
- padding: 16px 12px;
+ padding: 0;
border: 0;
- border-radius: var(--studio-radius-lg, 12px);
+ border-radius: 0;
background: transparent;
- color: inherit;
- font: inherit;
- text-align: left;
- cursor: pointer;
- -webkit-tap-highlight-color: transparent;
- transition: background-color 120ms ease-out;
-}
-.studio-long-running-state__header:hover:not(:disabled) { background: var(--studio-fill-subtle); }
-.studio-long-running-state__header:active:not(:disabled) { background: var(--studio-fill-selected); transition-duration: 0ms; }
-.studio-long-running-state__header:disabled { cursor: default; }
-.studio-long-running-state__header:focus-visible { outline: 2px solid var(--studio-focus-ring); outline-offset: 3px; }
-
-.studio-long-running-state__selection {
- position: absolute;
- inset: 0;
- border-radius: inherit;
- background: var(--studio-fill-hover);
- box-shadow: inset 0 0 0 1px var(--studio-fill-subtle);
- pointer-events: none;
-}
-.studio-long-running-state__header:active .studio-long-running-state__selection { background: var(--studio-fill-selected); }
-
-.studio-long-running-state__marker { position: relative; width: 24px; height: 24px; }
-.studio-long-running-state__marker-content,
-.studio-long-running-state__marker-loading {
- position: absolute;
- inset: 0;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-.studio-long-running-state__marker .studio-loading {
- --studio-loading-color: var(--studio-text-primary, #dbdee7);
- --studio-loading-track: var(--studio-border-subtle);
-}
-.studio-long-running-state__marker-shape {
- width: 24px;
- height: 24px;
- overflow: visible;
- color: var(--studio-text-tertiary);
- transition: color 180ms ease-out;
-}
-.studio-long-running-state__step[data-completed] .studio-long-running-state__marker-shape { color: color-mix(in srgb, var(--studio-success) 72%, black); }
-
-.studio-long-running-state__title {
- position: relative;
- display: grid;
- min-width: 0;
- color: var(--studio-text-tertiary);
- font-size: var(--studio-font-size-lg, 16px);
- font-weight: 500;
- line-height: var(--studio-line-height-lg, 24px);
- overflow-wrap: anywhere;
- transition: color 160ms ease-out;
-}
-.studio-long-running-state__step[data-completed] .studio-long-running-state__title { color: var(--studio-text-secondary); }
-.studio-long-running-state__step[data-current] .studio-long-running-state__title,
-.studio-long-running-state__step[data-selected] .studio-long-running-state__title { color: var(--studio-text-primary); }
-.studio-long-running-state__title-text { display: block; grid-area: 1 / 1; min-width: 0; }
-
-.studio-long-running-state__step-chevron {
- position: relative;
- width: 14px;
- height: 24px;
+ box-shadow: none;
color: var(--studio-text-secondary);
- opacity: 0;
- transition: opacity 120ms ease-out;
-}
-.studio-long-running-state__step[data-selected] .studio-long-running-state__step-chevron,
-.studio-long-running-state__header:hover:not(:disabled) .studio-long-running-state__step-chevron,
-.studio-long-running-state__header:focus-visible .studio-long-running-state__step-chevron { opacity: 1; }
-
-.studio-long-running-state__details {
- position: relative;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- min-width: 0;
- min-height: 480px;
- padding: 24px;
- overflow: hidden;
- border-radius: var(--studio-radius-2xl, 20px);
- color: var(--studio-text-primary);
- font-size: var(--studio-font-size-md, 14px);
- line-height: var(--studio-line-height-md, 22px);
overflow-wrap: anywhere;
- transform-origin: center center;
}
-.studio-long-running-state__details-header,
-.studio-long-running-state__details-heading {
- display: flex;
- align-items: center;
- flex-wrap: nowrap;
- gap: 12px;
-}
-.studio-long-running-state__details-header { flex: none; justify-content: space-between; min-height: 32px; margin-bottom: 24px; }
-.studio-long-running-state__details-heading { flex: 1; min-width: 0; }
-.studio-long-running-state__details-heading h4 {
- min-width: 0;
- margin: 0;
- overflow: hidden;
- color: var(--studio-text-primary);
- font-size: var(--studio-font-size-lg, 16px);
- font-weight: 600;
- line-height: var(--studio-line-height-lg, 24px);
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-.studio-long-running-state__status { flex: none; color: var(--studio-text-secondary); background: var(--studio-fill-subtle); }
-.studio-long-running-state__return { flex: none; font-family: inherit; }
-.studio-long-running-state__return:not([data-visible]) { visibility: hidden; pointer-events: none; }
-.studio-long-running-state__details[data-history] .studio-long-running-state__status { color: var(--studio-success); background: color-mix(in srgb, var(--studio-success) 8%, transparent); }
-
-.studio-long-running-state__details-stage { position: relative; min-width: 0; }
.studio-long-running-state__details-content { min-width: 0; }
-.studio-long-running-state__details-scroll { flex: 1; min-height: 0; width: 100%; overflow-anchor: none; }
+
.studio-long-running-state__details .studio-code-block {
width: 100%;
padding: 0;
@@ -235,40 +76,19 @@
background: transparent;
font-family: inherit;
}
-.studio-long-running-state__details .studio-code-block__header h3 { color: var(--studio-text-secondary); font-size: var(--studio-font-size-sm, 13px); }
+.studio-long-running-state__details .studio-code-block__header h3 { color: var(--studio-text-secondary); font-size: inherit; }
.studio-long-running-state__details .studio-code-block__viewport { height: auto; overflow: visible; }
-.studio-long-running-state__details .studio-code-block pre { font-size: var(--studio-font-size-md, 14px); line-height: var(--studio-line-height-md, 22px); }
+.studio-long-running-state__details .studio-code-block pre { font-size: inherit; line-height: inherit; }
.studio-long-running-state__details .studio-code-block__line { height: auto; min-height: var(--studio-line-height-md, 22px); }
-.studio-long-running-state__announcement {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- overflow: hidden;
- clip-path: inset(50%);
- white-space: nowrap;
- border: 0;
+@keyframes studio-progress-slide {
+ from { transform: translateX(-100%); }
+ to { transform: translateX(312.5%); }
}
@media (prefers-reduced-motion: reduce) {
- .studio-long-running-state__title,
- .studio-long-running-state__header,
- .studio-long-running-state__marker-shape,
- .studio-long-running-state__step-chevron { transition: none; }
-}
-@media (prefers-contrast: more) {
- .studio-long-running-state__title { color: var(--studio-text-primary) !important; }
- .studio-long-running-state__selection { box-shadow: inset 0 0 0 1px var(--studio-text-secondary); }
-}
-
-@container studio-long-running (max-width: 780px) {
- .studio-long-running-state__layout { grid-template-columns: 216px minmax(0, 1fr); gap: 32px; }
- .studio-long-running-state__heading { font-size: var(--studio-font-size-2xl, 24px); }
-}
-@container studio-long-running (max-width: 640px) {
- .studio-long-running-state__layout { grid-template-columns: minmax(0, 1fr); gap: 32px; }
- .studio-long-running-state__navigation { padding: 0; }
- .studio-long-running-state__overview { margin-bottom: 24px; }
- .studio-long-running-state__details { min-height: 440px; padding: 20px; }
+ .studio-long-running-state[data-state="running"] .studio-long-running-state__bar-indicator {
+ animation: none;
+ transform: none;
+ }
}
diff --git a/frontend/src/components/composites/LongRunningState/LongRunningState.tsx b/frontend/src/components/composites/LongRunningState/LongRunningState.tsx
index e2be2a540..08b30fa29 100644
--- a/frontend/src/components/composites/LongRunningState/LongRunningState.tsx
+++ b/frontend/src/components/composites/LongRunningState/LongRunningState.tsx
@@ -1,232 +1,82 @@
-import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
+import { type ComponentPropsWithoutRef, type CSSProperties, type ReactNode, useId, useLayoutEffect, useRef } from "react";
import { AnimatePresence, motion, useReducedMotion } from "motion/react";
-import { Button } from "../../primitives/Button";
-import { Label } from "../../primitives/Label";
-import { Loading } from "../../primitives/Loading";
import { ScrollArea } from "../../primitives/ScrollArea";
-import "../../tokens/glass-surface.css";
import "./LongRunningState.css";
export type LongRunningStep = {
/** 稳定且唯一的步骤标识 */
id: string;
- /** 步骤名称,支持动态更新 */
+ /** 当前进度名称,支持动态更新 */
title: string;
- /** 步骤的最新详情或完成记录,支持正文或无行号 CodeBlock 等 React 内容;完成后由调用方保留记录 */
+ /** 当前步骤的具体内容,支持文字或 React 内容 */
details?: ReactNode;
};
export type LongRunningStateProps = Omit, "children"> & {
- /** 按执行顺序展示的步骤 */
+ /** 按执行顺序提供的步骤 */
steps: readonly LongRunningStep[];
/** 当前执行步骤的 id;null 表示没有正在执行的步骤 */
currentStep: string | null;
- /** 已完成步骤的 id;不传时将当前步骤之前的步骤视为已完成,全部结束时请显式传入 */
+ /** 已完成步骤的 id;任务结束时显式传入全部步骤,以显示完成状态并保留最终内容 */
completedSteps?: readonly string[];
- /** 当前查看的历史步骤,null 跟随正在执行的步骤;不传时组件内部管理 */
- selectedStep?: string | null;
- /** 切换详情时触发,返回 null 表示恢复跟随当前进度,不会改变 currentStep */
- onSelectedStepChange?: (stepId: string | null) => void;
- /** 左侧任务标题,可传 null 隐藏 */
- heading?: ReactNode;
- /** 右侧详情的最大高度,超过后使用 ScrollArea 滚动,默认 360px */
+ /** 内容区最大高度,超过后使用 ScrollArea 滚动,默认 240px */
detailsMaxHeight?: CSSProperties["maxHeight"];
};
const ease = [0.22, 1, 0.36, 1] as const;
-const markerSpring = { type: "spring", bounce: 0, duration: 0.32 } as const;
-function StepDetails({ children, reducedMotion }: { children: ReactNode; reducedMotion: boolean }) {
- return (
-
- {children}
-
- );
-}
-
-function StepMarker({ running, completed, reducedMotion }: { running: boolean; completed: boolean; reducedMotion: boolean }) {
- const [keepLoading, setKeepLoading] = useState(running);
- useEffect(() => { if (running) setKeepLoading(true); }, [running]);
-
- return
-
- { if (!running) setKeepLoading(false); }}
- >
- {(running || keepLoading) && }
-
- ;
-}
-
-export function LongRunningState({ steps, currentStep, completedSteps, selectedStep, onSelectedStepChange, heading = "任务执行进度", detailsMaxHeight = 360, className = "", ...props }: LongRunningStateProps) {
- const instanceId = useId();
+export function LongRunningState({ steps, currentStep, completedSteps = [], detailsMaxHeight = 240, className = "", ...props }: LongRunningStateProps) {
+ const titleId = `${useId()}-title`;
const reducedMotion = Boolean(useReducedMotion());
- const [historyStep, setHistoryStep] = useState(null);
- const currentIndex = steps.findIndex(step => step.id === currentStep);
- const activeStep = steps[currentIndex];
- const completedIds = new Set(completedSteps ?? steps.slice(0, Math.max(0, currentIndex)).map(step => step.id));
- const completed = steps.filter(step => step.id !== currentStep && completedIds.has(step.id));
- const historyIsAvailable = steps.some(step => step.id === historyStep && completedIds.has(step.id));
- const requestedStep = selectedStep === undefined ? historyStep : selectedStep;
- const viewedStep = steps.find(step => step.id === requestedStep && (step.id === currentStep || completedIds.has(step.id)))
- ?? activeStep ?? completed[completed.length - 1];
- const isHistory = Boolean(viewedStep && viewedStep.id !== currentStep);
- const canReturnToCurrent = isHistory && Boolean(activeStep);
- const detailsId = `${instanceId}-details`;
- const detailsTitleId = `${instanceId}-details-title`;
const detailsRef = useRef(null);
- const currentButtonRef = useRef(null);
+ const activeStep = steps.find(step => step.id === currentStep);
+ const completedIds = new Set(completedSteps);
+ const completed = steps.filter(step => completedIds.has(step.id));
+ const complete = !activeStep && steps.length > 0 && completed.length === steps.length;
+ const displayedStep = activeStep ?? completed[completed.length - 1];
+ const title = activeStep?.title ?? (complete ? "任务已完成" : completed.length ? "等待下一步" : "等待任务开始");
+ const state = activeStep ? "running" : complete ? "complete" : "idle";
+
useLayoutEffect(() => {
if (detailsRef.current) detailsRef.current.scrollTop = 0;
- }, [viewedStep?.id]);
- useEffect(() => {
- if (selectedStep === undefined && historyStep !== null && (!historyIsAvailable || historyStep === currentStep)) setHistoryStep(null);
- }, [selectedStep, historyStep, historyIsAvailable, currentStep]);
-
- function selectStep(stepId: string) {
- const next = stepId === currentStep ? null : stepId;
- if (selectedStep === undefined) setHistoryStep(next);
- onSelectedStepChange?.(next);
- }
+ }, [displayedStep?.id]);
return (
-
-
-
-
- {heading != null && {heading}
}
- 已完成 {completed.length} / {steps.length}
-
-
-
-
-
- {steps.map((step, index) => {
- const isCurrent = step.id === currentStep;
- const isCompleted = !isCurrent && completedIds.has(step.id);
- const isSelected = step.id === viewedStep?.id;
- const status = isCurrent ? "进行中" : isCompleted ? "已完成" : "待执行";
- const titleId = `${instanceId}-${step.id}-title`;
- return (
- -
- {index < steps.length - 1 &&
-
- }
-
-
- );
- })}
-
-
-
-
-
-
{viewedStep?.title ?? "等待任务开始"}
- {viewedStep && }
-
-
-
-
-
- {viewedStep && viewedStep.details != null && (
-
- {viewedStep.details}
-
- )}
-
-
-
+
+
+
+
-
- {activeStep ? `正在执行:${activeStep.title}` : completed.length === steps.length && steps.length > 0 ? "所有步骤已完成" : "没有进行中的步骤"}
-
+
+ {displayedStep?.details}
+
);
}
diff --git a/frontend/src/components/composites/LongRunningState/README.md b/frontend/src/components/composites/LongRunningState/README.md
index 579a7b1e6..b268d59e1 100644
--- a/frontend/src/components/composites/LongRunningState/README.md
+++ b/frontend/src/components/composites/LongRunningState/README.md
@@ -1,32 +1,21 @@
-# Long-running State
+# Progress(LongRunningState)
-居中的双栏任务工作区,最大宽度 1120px,可直接放入全屏居中的容器
-左侧集中展示任务标题、完成进度与步骤导航,右侧是独立的执行详情面板
-使用系统字体,任务标题 26px,步骤标题 16px,正文与代码均使用 14px 字号、22px 行高
-任务标题在窄栏中缩为 24px,步骤以状态图形和无障碍名称表达进度,不在每一行重复状态说明
-右侧复用 ScrollArea,detailsMaxHeight 默认 360px,超过后纵向滚动,切换查看步骤时回到顶部
-桌面详情面板至少 480px 高,切换长短内容时步骤位置不跳动,窄容器下自动上下排列
+整体左对齐,纵向依次展示当前进度名称、循环加载条和具体内容,随父容器宽度收缩
-详情面板与 Drawer 共用 `tokens/glass-surface.css`,包含半透明底色、背景模糊、边缘高光及阴影,深浅主题使用同一份材质定义
-玻璃只用于详情层,左侧步骤保持清晰的实色交互反馈;无额外遮罩,不阻断任务导航
+当前名称使用 14px 正常字号与 22px 行高,切换时先向上渐隐,下一名称从下方向上滑入
+执行中加载条以 1.1 秒周期快速滑动,不显示未经确认的完成百分比
+内容复用无背景、无边框的 ScrollArea,detailsMaxHeight 默认 240px,支持键盘滚动
+步骤切换时滚回内容顶部,同一步骤的内容更新保留当前阅读位置
+减少动态效果模式下名称直接更新,加载条保持静态,状态文案继续表明任务进度
-已完成步骤显示绿色圆圈与白色对勾,点击后查看该步骤的 details;尚未开始的步骤不可点击
-currentStep 只表示实际执行进度,查看历史不会修改它;点击当前步骤或「返回当前步骤」恢复跟随进度
-圆点与完成圆圈共用同一个图形,以无回弹的阻尼过渡连续改变大小,Loading 在同一中心淡入淡出,完成时绘制对勾
-状态可在动画中途改变,图形从当前值继续过渡,连接线同步变色;减少动态效果模式直接更新图形
-选中背景沿步骤位置平滑移动,进度条跟随实际完成数量增长;这些动效不会移动或缩放步骤文字
-状态变化不会重新播放未改动的步骤标题,详情立即替换并在原位短暂淡入,始终只有一层正文,连续切换不会累积日志重影
-标题与操作按钮始终保留占位,按下步骤时即时反馈;返回当前步骤后,键盘焦点也回到对应步骤
-支持减少透明度与高对比度偏好,自动将玻璃面板切换为清晰的不透明表面
-
-details 接收文字或 React 内容;代码形式直接复用 CodeBlock
+details 接收文字或 React 内容,代码可直接复用 CodeBlock,背景保持透明
```tsx
,
+ details: "正在查找相关文档,并核对不同来源的信息",
}]}
/>
```
-CodeBlock 的 showLineNumbers 默认 true;false 隐藏行号与行号占位,保留代码字体、缩进和复制功能
-language="log" 使用现有代码配色高亮时间、日志级别、分类标签、函数、字段名和数字,并适配明暗主题
-预览可在正文与代码之间切换,代码示例包含长日志用于检查滚动
+全部结束时传 currentStep={null} 与完整的 completedSteps,名称显示「任务已完成」,加载条停止并保留最后一步的内容
+暂无执行步骤但存在部分完成记录时显示「等待下一步」,空任务显示「等待任务开始」
+重试时更新 currentStep 和 completedSteps,组件会重新显示执行中的状态
-completedSteps 不传时,默认将 currentStep 之前的步骤视为已完成;全部结束时传 currentStep={null} 与完整的 completedSteps
-selectedStep 可受控指定查看的步骤,null 跟随当前执行步骤,onSelectedStepChange 返回对应 id 或 null
-完成记录由调用方保存在每一步的 details 中,组件不会替业务保存数据或重新执行历史任务
-预览中的「完成当前步骤」可检查进度切换和动画,已完成步骤展示完成日志与结果摘要
+组件库以 Text 和 Code 两个二级标题独立展示正文与日志示例,各自提供「重新开始」与「完成当前步骤」
+Code 示例包含长日志,用于检查滚动区域;旧链接 #long-running-state 和 #progress 均可访问
diff --git a/frontend/src/components/primitives/Button/Button.css b/frontend/src/components/primitives/Button/Button.css
index bdd1ed137..5b7b65666 100644
--- a/frontend/src/components/primitives/Button/Button.css
+++ b/frontend/src/components/primitives/Button/Button.css
@@ -1,23 +1,26 @@
/* Figma: Ig6wLTUxhfAxb20bKrXqh1 / 740:296907 */
.studio-button {
+ --studio-button-height: var(--studio-size-button-default);
+ --studio-button-icon-only-size: var(--studio-size-icon-button-default);
+ --studio-button-icon-size: calc(1em + 2px);
box-sizing: border-box;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
min-width: 80px;
- height: 32px;
+ height: var(--studio-button-height);
padding: 5px 12px;
border: 0;
- border-radius: 8px;
+ border-radius: var(--studio-radius-md);
background: #ffffff;
color: #101013;
- font-family: "Century Gothic", sans-serif;
- font-size: 14px;
+ font-family: var(--studio-font-family-ui);
+ font-size: var(--studio-font-size-md);
font-style: normal;
- font-weight: 400;
+ font-weight: var(--studio-font-weight-regular);
font-synthesis: none;
- line-height: 22px;
+ line-height: var(--studio-line-height-md);
letter-spacing: 0;
white-space: nowrap;
cursor: pointer;
@@ -41,33 +44,26 @@
display: inline-flex;
align-items: center;
justify-content: center;
- flex: 0 0 16px;
- width: 16px;
- height: 16px;
+ flex: 0 0 var(--studio-button-icon-size);
+ width: var(--studio-button-icon-size);
+ height: var(--studio-button-icon-size);
}
-/* Figma 635:258177 — compact account action */
+/* Rounded action, using the same size options as other buttons */
.studio-button--pill {
min-width: 65px;
- height: var(--studio-size-control-pill);
- padding: 2px 12px;
border-radius: var(--studio-radius-pill);
background: var(--studio-surface-update);
color: var(--studio-text-strong);
- font-size: var(--studio-font-size-xs);
- line-height: var(--studio-line-height-xs);
+}
+.studio-button--pill.studio-button--size-default {
+ --studio-button-height: var(--studio-size-control-pill);
}
.studio-button--pill:not(:disabled):hover { background: color-mix(in srgb, var(--studio-surface-update), var(--studio-text-primary) 10%); }
.studio-button--pill:not(:disabled):active { background: color-mix(in srgb, var(--studio-surface-update), var(--studio-text-primary) 16%); }
.studio-button--pill:focus-visible { outline: 2px solid var(--studio-focus-ring); outline-offset: 2px; }
.studio-button--pill:disabled { opacity: .45; cursor: not-allowed; }
-.studio-button--secondary .studio-button__icon {
- flex-basis: 10px;
- width: 10px;
- height: 10px;
-}
-
.studio-button__icon > svg,
.studio-button__icon > img {
display: block;
@@ -83,25 +79,15 @@
.studio-button--ghost {
justify-content: flex-start;
min-width: 86.5px;
- height: 24px;
padding: 0;
gap: 8px;
border-radius: 0;
background: transparent;
color: var(--studio-text-secondary, rgba(219, 222, 231, .6));
- font-size: 16px;
- line-height: 24px;
-}
-.studio-button--ghost .studio-button__icon {
- flex-basis: 17px;
- width: 17px;
- height: 17px;
}
-
.studio-button--link {
justify-content: flex-start;
min-width: 0;
- height: 24px;
padding: 0;
gap: 4px;
border-radius: 0;
@@ -126,9 +112,6 @@
}
.studio-button--link .studio-button__end-icon {
- flex-basis: 1em;
- width: 1em;
- height: 1em;
opacity: 0;
transition: opacity 160ms ease-out;
}
@@ -147,53 +130,36 @@
cursor: not-allowed;
}
-.studio-button--icon-only {
- justify-content: center;
- flex-shrink: 0;
- width: 28px;
- min-width: 28px;
- height: 28px;
- padding: 6px;
- gap: 0;
- border-radius: 6px;
-}
-
-.studio-button--icon-only .studio-button__icon {
- flex-basis: 16px;
- width: 16px;
- height: 16px;
+.studio-button--size-compact {
+ --studio-button-height: var(--studio-size-button-compact);
+ --studio-button-icon-only-size: var(--studio-size-icon-button-compact);
+ padding: 3px 10px;
+ font-size: var(--studio-font-size-xs);
+ line-height: var(--studio-line-height-sm);
}
.studio-button--size-large {
- height: 36px;
- padding: 7px 12px;
-}
-
-.studio-button--size-large .studio-button__icon {
- flex-basis: 16px;
- width: 16px;
- height: 16px;
+ --studio-button-height: var(--studio-size-button-large);
+ --studio-button-icon-only-size: var(--studio-size-icon-button-large);
+ padding: 6px 12px;
+ font-size: var(--studio-font-size-lg);
+ line-height: var(--studio-line-height-lg);
}
-.studio-button--size-large.studio-button--icon-only {
- width: 36px;
- min-width: 36px;
- padding: 8px;
-}
-
-.studio-button--size-large.studio-button--icon-only .studio-button__icon,
-.studio-button--size-compact.studio-button--icon-only .studio-button__icon {
- flex-basis: 20px;
- width: 20px;
- height: 20px;
+.studio-button--ghost,
+.studio-button--link {
+ padding: 0;
}
-.studio-button--size-compact.studio-button--icon-only {
- width: 20px;
- min-width: 20px;
- height: 20px;
+.studio-button--icon-only {
+ justify-content: center;
+ flex-shrink: 0;
+ width: var(--studio-button-icon-only-size);
+ min-width: var(--studio-button-icon-only-size);
+ height: var(--studio-button-icon-only-size);
padding: 0;
- border-radius: 0;
+ gap: 0;
+ border-radius: var(--studio-radius-sm);
}
.studio-button--icon-only:focus-visible {
diff --git a/frontend/src/components/primitives/Button/Button.tsx b/frontend/src/components/primitives/Button/Button.tsx
index c280e3900..cfda8f4fe 100644
--- a/frontend/src/components/primitives/Button/Button.tsx
+++ b/frontend/src/components/primitives/Button/Button.tsx
@@ -4,7 +4,7 @@ import "./Button.css";
export type ButtonProps = ComponentProps<"button"> & {
variant?: "primary" | "secondary" | "outline" | "ghost" | "link" | "pill";
- /** default 保留各变体尺寸;large 为 36px;compact 用于 20px 无内边距图标按钮 */
+ /** compact / default / large:文字按钮高 28 / 32 / 36px,字号 12 / 14 / 16px,图标 14 / 16 / 18px;纯图标按钮高 20 / 28 / 36px */
size?: "default" | "large" | "compact";
startIcon?: ReactNode;
/** 文字右侧图标;link 类型在悬停或键盘聚焦时显示 */
@@ -45,7 +45,7 @@ export function Button({
{!iconOnly && endIcon &&
{endIcon}}
{loading && (
-
+
)}
diff --git a/frontend/src/components/primitives/DatePicker/DatePicker.css b/frontend/src/components/primitives/DatePicker/DatePicker.css
index 8e0189c0f..b77114a7a 100644
--- a/frontend/src/components/primitives/DatePicker/DatePicker.css
+++ b/frontend/src/components/primitives/DatePicker/DatePicker.css
@@ -118,8 +118,6 @@
.studio-date-picker__time { box-sizing: border-box; padding: 4px 10px; border: 1px solid var(--date-picker-border); border-radius: 6px; background: var(--date-picker-input); }
.studio-date-picker__footer-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.studio-date-picker__timezone { min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--date-picker-muted); font-size: 12px; white-space: nowrap; }
-.studio-date-picker__done.studio-button { min-width: 56px; background: var(--date-picker-selected); color: var(--date-picker-on-selected); font-family: inherit; font-size: 13px; }
-.studio-date-picker__done.studio-button:not(:disabled):hover { filter: brightness(.94); }
@keyframes studio-date-picker-in { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) {
.studio-date-picker__popover[data-entering], .studio-date-picker__popover[data-exiting] { animation: none; }
diff --git a/frontend/src/components/primitives/DatePicker/DatePicker.tsx b/frontend/src/components/primitives/DatePicker/DatePicker.tsx
index 198f141ff..56a1a14d3 100644
--- a/frontend/src/components/primitives/DatePicker/DatePicker.tsx
+++ b/frontend/src/components/primitives/DatePicker/DatePicker.tsx
@@ -81,7 +81,7 @@ function TimeControls({ locale, hourCycle, timeZone, placeholder, minimum, maxim
{timeZone}
-
+
;
}
diff --git a/frontend/src/components/primitives/Loading/Loading.tsx b/frontend/src/components/primitives/Loading/Loading.tsx
index 996e2e489..6cba33ef1 100644
--- a/frontend/src/components/primitives/Loading/Loading.tsx
+++ b/frontend/src/components/primitives/Loading/Loading.tsx
@@ -5,8 +5,8 @@ import "./Loading.css";
export type LoadingProps = {
/** infinity 为无限路径,ring 为旋转圆环 */
variant?: "infinity" | "ring";
- /** 图形宽度,单位 px;无限路径高度为宽度的一半,圆环宽高相同 */
- size?: number;
+ /** 图形宽度,数字单位为 px,也支持 CSS 长度;无限路径高度为宽度的一半,圆环宽高相同 */
+ size?: number | string;
/** 仅供屏幕阅读器读取的加载状态文案 */
label?: string;
/** 作为按钮内图标等装饰时启用,由外层提供状态说明 */
@@ -17,8 +17,10 @@ export type LoadingProps = {
const infinityPath = "M 15 15 C 15 5, 25 5, 30 15 C 35 25, 45 25, 45 15 C 45 5, 35 5, 30 15 C 25 25, 15 25, 15 15";
-export function Loading({ variant = "infinity", size = variant === "ring" ? 40 : 48, label = "加载中", decorative = false, className = "", style }: LoadingProps) {
+export function Loading({ variant = "infinity", size = variant === "ring" ? 20 : 32, label = "加载中", decorative = false, className = "", style }: LoadingProps) {
const reducedMotion = useReducedMotion();
+ const halfSize = typeof size === "number" ? size / 2 : `calc(${size} / 2)`;
+ const ringBorderWidth = typeof size === "number" ? size * 3 / 40 : `calc(${size} * 3 / 40)`;
return
{variant === "infinity" ?
: {
+ const matchMedia = window.matchMedia;
+ window.matchMedia = vi.fn(query => ({ ...matchMedia(query), matches: false }));
+ const first = { id: "first", type: "tool" as const, title: "读取数据", status: "complete" as const, input: "{}" };
+ const second = { id: "second", type: "tool" as const, title: "分析数据", status: "running" as const };
+ try {
+ await render([{ id: "a", role: "assistant", status: "running", blocks: [first] }]);
+ const existing = host.querySelector('[data-step-id="first"]')!;
+ const disclosure = existing.querySelector("button")!;
+ expect(existing.hasAttribute("data-entering")).toBe(false);
+ await click(disclosure);
+ await render([{ id: "a", role: "assistant", status: "running", blocks: [first, second] }]);
+ const added = host.querySelector('[data-step-id="second"]')!;
+ expect(added.hasAttribute("data-entering")).toBe(true);
+ expect(host.querySelector('[data-step-id="first"]')).toBe(existing);
+ expect(disclosure.getAttribute("aria-expanded")).toBe("true");
+
+ const animationEnd = new Event("animationend", { bubbles: true });
+ Object.defineProperty(animationEnd, "animationName", { value: "studio-conversation-step-content-in" });
+ await act(async () => added.firstElementChild!.dispatchEvent(animationEnd));
+ await render([
+ { id: "a", role: "assistant", status: "complete", blocks: [first, { ...second, status: "complete" }] },
+ { id: "b", role: "assistant", status: "running", steps: [first] },
+ ]);
+ expect(host.querySelector('[data-step-id="second"]')).toBe(added);
+ expect(added.hasAttribute("data-entering")).toBe(false);
+ const sameIdInNewMessage = host.querySelectorAll('[data-step-id="first"]')[1];
+ expect(sameIdInNewMessage.hasAttribute("data-entering")).toBe(true);
+ await act(async () => sameIdInNewMessage.querySelector("button")!.focus());
+ expect(sameIdInNewMessage.hasAttribute("data-entering")).toBe(false);
+
+ await render([{ id: "a", role: "assistant", status: "running", blocks: [first] }]);
+ await render([{ id: "a", role: "assistant", status: "running", blocks: [first, second] }]);
+ const retried = host.querySelector('[data-step-id="second"]')!;
+ expect(retried).not.toBe(added);
+ expect(retried.hasAttribute("data-entering")).toBe(true);
+ expect(host.querySelector('[data-step-id="first"]')).toBe(existing);
+ expect(disclosure.getAttribute("aria-expanded")).toBe("true");
+ } finally {
+ window.matchMedia = matchMedia;
+ }
+});
+
+it("shows new steps immediately with reduced motion and does not replay existing collapsed handoff steps", async () => {
+ const matchMedia = window.matchMedia;
+ window.matchMedia = vi.fn(query => ({ ...matchMedia(query), matches: false }));
+ const child = { id: "nested", type: "tool" as const, title: "汇总数据", status: "complete" as const };
+ const handoff = { id: "handoff", type: "handoff" as const, title: "交给分析智能体", toAgent: "分析智能体", status: "complete" as const, steps: [child] };
+ try {
+ await render([{ id: "a", role: "assistant", blocks: [handoff] }]);
+ await click(host.querySelector('[data-step-id="handoff"] button'));
+ expect(host.querySelector('[data-step-id="nested"]')?.hasAttribute("data-entering")).toBe(false);
+ window.matchMedia = matchMedia;
+ await render([{ id: "a", role: "assistant", blocks: [handoff, { ...child, id: "new" }] }]);
+ expect(host.querySelector('[data-step-id="new"]')?.hasAttribute("data-entering")).toBe(false);
+ } finally {
+ window.matchMedia = matchMedia;
+ }
+});
+
it("dispatches authorization and cancellation callbacks and follows the supplied state", async () => {
const onAuthorize = vi.fn();
const onCancel = vi.fn();
diff --git a/frontend/tests/longRunningState.test.tsx b/frontend/tests/longRunningState.test.tsx
index 3ec9c0554..893767475 100644
--- a/frontend/tests/longRunningState.test.tsx
+++ b/frontend/tests/longRunningState.test.tsx
@@ -24,108 +24,61 @@ afterEach(async () => { await act(async () => root.unmount()); host.remove(); })
async function render(props: Partial = {}) {
await act(async () => root.render());
}
-function button(label: string) {
- const element = Array.from(host.querySelectorAll("button")).find(item => item.getAttribute("aria-label") === label || item.textContent === label);
- expect(element).toBeDefined();
- return element!;
-}
-async function click(label: string) { await act(async () => button(label).click()); }
-function details() { return host.querySelector(".studio-long-running-state__details-content:not([data-exiting])")?.textContent; }
+function title() { return host.querySelector('[role="status"]')?.textContent; }
+function content() { return host.querySelector('[role="region"]')!; }
+async function expectTitle(value: string) { await vi.waitFor(() => expect(title()).toBe(value)); }
-it("keeps unchanged step titles mounted while status transitions animate their icons", async () => {
+it("presents the active name, indeterminate progress, and scrollable content in order", async () => {
await render();
- const runningTitle = button("检索资料,进行中").querySelector(".studio-long-running-state__title-text");
- const pendingTitle = button("生成结果,待执行").querySelector(".studio-long-running-state__title-text");
- await render({ currentStep: "write" });
- await vi.waitFor(() => {
- expect(button("检索资料,已完成").querySelectorAll(".studio-long-running-state__title-text")).toHaveLength(1);
- expect(button("生成结果,进行中").querySelectorAll(".studio-long-running-state__title-text")).toHaveLength(1);
- });
- expect(button("检索资料,已完成").querySelector(".studio-long-running-state__title-text")).toBe(runningTitle);
- expect(button("生成结果,进行中").querySelector(".studio-long-running-state__title-text")).toBe(pendingTitle);
+ const component = host.firstElementChild!;
+ expect(Array.from(component.children).map(child => child.getAttribute("role"))).toEqual(["status", "progressbar", "region"]);
+ expect(title()).toBe("检索资料");
+ expect(host.querySelector('[role="progressbar"]')?.hasAttribute("aria-valuenow")).toBe(false);
+ expect(content().textContent).toBe("检索执行日志");
+ expect(content().tabIndex).toBe(0);
+ expect(content().style.maxHeight).toBe("240px");
+ expect(host.querySelector("button, ol")).toBeNull();
});
-it("opens completed records without changing the current running step and blocks pending steps", async () => {
+it("updates the step and resets scrolling without stacking old content", async () => {
await render();
- expect(button("生成结果,待执行").disabled).toBe(true);
- await click("理解任务,已完成");
- expect(details()).toBe("已确认任务范围");
- expect(button("理解任务,已完成").getAttribute("aria-pressed")).toBe("true");
- expect(host.querySelector('[aria-current="step"]')?.textContent).toContain("检索资料");
- await click("返回当前步骤");
- expect(details()).toBe("检索执行日志");
- expect(document.activeElement).toBe(button("检索资料,进行中"));
-});
-
-it("shows only the latest record during repeated history switches", async () => {
+ content().scrollTop = 180;
await render({ currentStep: "write" });
- for (const [label, content] of [
- ["理解任务,已完成", "已确认任务范围"],
- ["检索资料,已完成", "检索执行日志"],
- ["理解任务,已完成", "已确认任务范围"],
- ["生成结果,进行中", "结果执行日志"],
- ]) {
- await click(label);
- expect(host.querySelectorAll(".studio-long-running-state__details-content")).toHaveLength(1);
- expect(details()).toBe(content);
- }
+ await expectTitle("生成结果");
+ expect(content().textContent).toBe("结果执行日志");
+ expect(content().scrollTop).toBe(0);
+ expect(host.querySelectorAll('[role="region"]')).toHaveLength(1);
});
-it("retains the marker through progress and restart so a transition can reverse in place", async () => {
+it("keeps the reading position when the current step receives new content", async () => {
await render();
- const circle = button("生成结果,待执行").querySelector(".studio-long-running-state__marker-shape circle");
- expect(circle).not.toBeNull();
- await render({ currentStep: "write" });
- expect(button("生成结果,进行中").querySelector(".studio-long-running-state__marker-shape circle")).toBe(circle);
- await render({ currentStep: null, completedSteps: steps.map(step => step.id) });
- expect(button("生成结果,已完成").querySelector(".studio-long-running-state__marker-shape circle")).toBe(circle);
- await render({ currentStep: "start" });
- expect(button("生成结果,待执行").querySelector(".studio-long-running-state__marker-shape circle")).toBe(circle);
+ content().scrollTop = 120;
+ await render({ steps: steps.map(step => step.id === "search" ? { ...step, title: "核对资料", details: "更新后的检索日志" } : step) });
+ await expectTitle("核对资料");
+ expect(content().textContent).toBe("更新后的检索日志");
+ expect(content().scrollTop).toBe(120);
});
-it("keeps a historical record selected while execution advances, then resumes following progress", async () => {
- await render();
- await click("理解任务,已完成");
- await render({ currentStep: "write" });
- expect(details()).toBe("已确认任务范围");
- expect(host.querySelector('[aria-current="step"]')?.textContent).toContain("生成结果");
- await click("返回当前步骤");
- expect(details()).toBe("结果执行日志");
+it("stops progress at completion, preserves the final result, and supports restarting", async () => {
await render({ currentStep: null, completedSteps: steps.map(step => step.id) });
- expect(details()).toBe("结果执行日志");
- expect(host.querySelector('[role="status"]')?.textContent).toBe("所有步骤已完成");
- await click("检索资料,已完成");
- expect(details()).toBe("检索执行日志");
-});
-
-it("supports controlled record selection and reports returning to live progress as null", async () => {
- const onSelectedStepChange = vi.fn();
- await render({ selectedStep: null, onSelectedStepChange });
- await click("理解任务,已完成");
- expect(onSelectedStepChange).toHaveBeenLastCalledWith("start");
- expect(details()).toBe("检索执行日志");
- await render({ selectedStep: "start", onSelectedStepChange });
- expect(details()).toBe("已确认任务范围");
- await click("返回当前步骤");
- expect(onSelectedStepChange).toHaveBeenLastCalledWith(null);
-});
-
-it("clears stale history after a restart and resets the scroll position on record changes", async () => {
- await render({ currentStep: "write" });
- await click("检索资料,已完成");
- const viewport = host.querySelector(".studio-long-running-state__details-scroll")!;
- viewport.scrollTop = 180;
- await click("理解任务,已完成");
- expect(viewport.scrollTop).toBe(0);
- await render({ currentStep: "start" });
- await render({ currentStep: "search" });
- expect(details()).toBe("检索执行日志");
+ expect(title()).toBe("任务已完成");
+ expect(host.firstElementChild?.getAttribute("data-state")).toBe("complete");
+ expect(host.querySelector('[role="progressbar"]')?.getAttribute("aria-valuenow")).toBe("100");
+ expect(content().textContent).toBe("结果执行日志");
+ await render({ currentStep: "start", completedSteps: [] });
+ await expectTitle("理解任务");
+ expect(host.firstElementChild?.getAttribute("data-state")).toBe("running");
+ expect(content().textContent).toBe("已确认任务范围");
});
-it("honors explicitly incomplete earlier steps and handles an empty task", async () => {
- await render({ currentStep: "write", completedSteps: ["start"] });
- expect(button("检索资料,待执行").disabled).toBe(true);
- expect(host.querySelector(".studio-long-running-state__progress")?.textContent).toBe("已完成 1 / 3");
+it("handles waiting and empty tasks without claiming completion", async () => {
+ await render({ currentStep: null, completedSteps: ["start", "unknown"], detailsMaxHeight: 160 });
+ expect(title()).toBe("等待下一步");
+ expect(content().textContent).toBe("已确认任务范围");
+ expect(content().style.maxHeight).toBe("160px");
+ expect(host.querySelector('[role="progressbar"]')?.getAttribute("aria-valuenow")).toBe("0");
await render({ steps: [], currentStep: null });
- expect(host.querySelector(".studio-long-running-state__details-heading")?.textContent).toBe("等待任务开始");
+ await expectTitle("等待任务开始");
+ expect(content().textContent).toBe("");
+ expect(host.firstElementChild?.getAttribute("data-state")).toBe("idle");
});
diff --git a/veadk/webui/assets/app/index-BRhKl68A.js b/veadk/webui/assets/app/index-CJviP90a.js
similarity index 82%
rename from veadk/webui/assets/app/index-BRhKl68A.js
rename to veadk/webui/assets/app/index-CJviP90a.js
index 3c58a84e3..5b84e53a2 100644
--- a/veadk/webui/assets/app/index-BRhKl68A.js
+++ b/veadk/webui/assets/app/index-CJviP90a.js
@@ -1,5 +1,5 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visualizations/mermaid/mermaid.core-BpZvGNH3.js","assets/chunks/purify.es-BnINGy_Y.js","assets/chunks/MarkdownPromptEditor-BPvUcz0u.js","assets/styles/MarkdownPromptEditor-ZH9qtki0.css","assets/chunks/QuickAgentCreateDialog-DXGVTm8f.js","assets/styles/QuickAgentCreateDialog-DGsLIlOX.css"])))=>i.map(i=>d[i]);
-var uUe=Object.defineProperty;var qW=e=>{throw TypeError(e)};var dUe=(e,t,n)=>t in e?uUe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Jt=(e,t,n)=>dUe(e,typeof t!="symbol"?t+"":t,n),WW=(e,t,n)=>t.has(e)||qW("Cannot "+n);var rl=(e,t,n)=>(WW(e,t,"read from private field"),n?n.call(e):t.get(e)),KW=(e,t,n)=>t.has(e)?qW("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),$M=(e,t,n,i)=>(WW(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);function fUe(e,t){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var xm=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function _w(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ole={exports:{}},fI={};/**
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visualizations/mermaid/mermaid.core-DeGzkuWe.js","assets/chunks/purify.es-BnINGy_Y.js","assets/chunks/MarkdownPromptEditor-CzsU5wfw.js","assets/styles/MarkdownPromptEditor-ZH9qtki0.css","assets/chunks/QuickAgentCreateDialog-DPeLFn25.js","assets/styles/QuickAgentCreateDialog-DGsLIlOX.css"])))=>i.map(i=>d[i]);
+var cUe=Object.defineProperty;var HW=e=>{throw TypeError(e)};var uUe=(e,t,n)=>t in e?cUe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Jt=(e,t,n)=>uUe(e,typeof t!="symbol"?t+"":t,n),qW=(e,t,n)=>t.has(e)||HW("Cannot "+n);var rl=(e,t,n)=>(qW(e,t,"read from private field"),n?n.call(e):t.get(e)),WW=(e,t,n)=>t.has(e)?HW("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),$M=(e,t,n,i)=>(qW(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);function dUe(e,t){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var xm=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function _w(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var wle={exports:{}},fI={};/**
* @license React
* react-jsx-runtime.production.js
*
@@ -7,8 +7,8 @@ var uUe=Object.defineProperty;var qW=e=>{throw TypeError(e)};var dUe=(e,t,n)=>t
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var hUe=Symbol.for("react.transitional.element"),pUe=Symbol.for("react.fragment");function kle(e,t,n){var i=null;if(n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),"key"in t){n={};for(var r in t)r!=="key"&&(n[r]=t[r])}else n=t;return t=n.ref,{$$typeof:hUe,type:e,key:i,ref:t!==void 0?t:null,props:n}}fI.Fragment=pUe;fI.jsx=kle;fI.jsxs=kle;Ole.exports=fI;var o=Ole.exports;const Sle={requestFailed:"Request failed ({{status}})",unknownError:"Unknown error",contentTypeMissing:"Content-Type missing",response:"Response: {{response}}",fallbackWithDetail:"{{fallback}}: {{detail}}",fallbackWithHttpStatus:"{{fallback}} (HTTP {{status}})",nonJsonResponse:"{{fallback}}: the server returned a non-JSON response ({{contentType}})"},Ele={unconfigured:"AgentKit Dev Sandbox has not been configured by an administrator.",invalidSession:"AgentKit CLI returned an invalid session.",loadCapabilitiesFailed:"Unable to load the AgentKit CLI configuration.",invalidCapabilities:"AgentKit CLI returned an invalid configuration status.",listSessionsFailed:"Unable to load AgentKit CLI sessions.",invalidSessionList:"AgentKit CLI returned an invalid session list.",createSessionFailed:"Unable to create an AgentKit CLI session.",openSessionFailed:"Unable to open the AgentKit CLI session.",openTerminalFailed:"Unable to open the AgentKit CLI terminal.",invalidTerminalUrl:"AgentKit CLI returned an invalid terminal URL."},Cle={cnBeijing:"China North 2 (Beijing)",cnShanghai:"China East 2 (Shanghai)"},Tle={runtimeUnsupported:"This Runtime does not currently support connections. Confirm that the service is running normally."},Ale={autoConfigureFailed:"Failed to configure the Feishu bot automatically"},_le={actionFailed:"Failed to {{action}}",detail:"Details: {{detail}}",request:"Request: {{request}}"},jle={persistentMemoryHint:"Tip: The session no longer exists. With in-memory or SQLite short-term memory, sessions may be lost during multi-instance routing, process restarts, or rolling deployments. Use database-backed persistent short-term memory instead.",unsupportedRouteHint:"Tip: This Runtime does not provide the session run API and may be incompatible with the current Studio version.",toolArgumentHint:"Tip: The model generated incomplete tool arguments. Send the request again.",resourceCollectionExpiredHint:"Tip: This resource collection has expired. Send the task again so the system can collect the resources before creating the Agent.",networkConfigurationHint:"Tip: Try again later, and review the Runtime, model, or gateway logs.",modelQuotaHint:"Tip: The model has reached its TPM/RPM quota. Try again later or increase the model quota.",rawResponseLabel:"Raw response: "},Nle={httpStatus:"HTTP status: {{status}}",errorCode:"Error code: {{code}}",cloudResponseBody:`Cloud response body:
-{{body}}`,loadFailedWithDetail:"Failed to load instance logs: {{detail}}",invalidFormat:"Failed to load instance logs: the service returned an invalid format"},Rle={untitledSession:"Untitled session",webUnavailable:"Web search is unavailable because /web/search is not enabled on the server.",webFailed:"Web search failed: {{message}}",webNotMounted:"This Agent does not have the web_search tool mounted.",knowledgeNotMounted:"This Agent does not have a knowledge base mounted.",memoryNotMounted:"This Agent does not have long-term memory mounted.",knowledge:"Knowledge base",longTermMemory:"Long-term memory"},Ile={listSpacesFailed:"Failed to load Skill spaces",createSpaceFailed:"Failed to create the Skill space",updateSpaceFailed:"Failed to update the Skill space",deleteSpaceFailed:"Failed to delete the Skill space",uploadFailed:"Failed to upload the Skill",validateFailed:"Failed to validate the Skill",deleteFailed:"Failed to delete the Skill",listFilesFailed:"Failed to load Skill files",downloadFailed:"Failed to download the Skill",sharedSpaceFailed:"Shared space unavailable",reservedSpaceName:"This name is reserved for a system space; choose another name",reviewSpaceFailed:"The review space is unavailable",submitReviewFailed:"Could not submit the publication request",listReviewsFailed:"Could not load review requests",reviewFilesFailed:"Could not load submitted files",decideReviewFailed:"Review failed, please try again",listVersionsFailed:"Unable to load skill versions",uploadVersionFailed:"Unable to upload the new skill version"},Ple={truncatedData:"{{data}}… (truncated, {{count}} characters total)",incompleteEvent:"The stream ended with an incomplete SSE event. Raw data: {{data}}",invalidEventJson:"Failed to parse the SSE event JSON. Raw data: {{data}}"},Dle={loadConfigNetworkFailed:"Unable to load the sign-in configuration. Check your network and try again.",configServiceFailed:"The sign-in configuration service failed (HTTP {{status}}). Try again later.",invalidConfigResponse:"The sign-in configuration service returned an unreadable response. Try again later.",serviceNetworkFailed:"Unable to connect to the identity service. Check your network and try again.",invalidServiceResponse:"The identity service returned an unreadable response. Try again later.",serviceFailed:"The identity service failed (HTTP {{status}}). Try again later."},Mle={invalidToken:"The GitHub token is invalid or does not have repository write access",notFound:"The repository, branch, or file does not exist, or the token cannot access it",rejectedCommit:"GitHub rejected the commit. Check the branch and file state",requestFailed:"GitHub request failed (HTTP {{status}})",networkFailed:"Unable to connect to GitHub. Check your network and try again",invalidRepositoryFormat:"The GitHub repository must use the owner/repository format",insecureRepositoryUrl:"Only secure github.com repository URLs are supported",unsafeProjectPath:"The Agent project directory must be a safe relative path within the repository",tokenRequired:"A GitHub token is required",invalidBaseBranch:"The target branch format is invalid",invalidPublishBranch:"The publish branch format is invalid",noFiles:"There are no files to commit",missingBaseSha:"The target branch does not have a valid Git SHA",fileAlreadyExists:"{{path}} already exists in the target repository; the existing file was not overwritten",pathNotUpdatable:"The target path {{path}} is not an updatable file",invalidPullRequest:"GitHub did not return a valid pull request"},Lle={loadCapabilitiesFailed:"Failed to load video model capabilities",uploadAssetFailed:"Failed to upload {{fileName}}",enhancePromptFailed:"Failed to enhance the prompt",createTaskFailed:"Failed to create the video generation task",getTaskFailed:"Failed to load the video generation task",downloadFailed:"Failed to download the generated video"},$le={listFailed:"Failed to load website integrations",createFailed:"Failed to create the website integration",deleteFailed:"Failed to delete the website integration"},Fle={loadFailed:"Failed to load the knowledge base",htmlHidden:"[HTML content hidden]",redacted:"[redacted]",depthTruncated:"[content nested too deeply; truncated]",circularReference:"[circular reference]",diagnosticsUnavailable:"[diagnostic information unavailable]",statusCode:"Status: {{status}}",errorCode:"Error code: {{code}}",requestId:"Request ID: {{requestId}}",diagnostics:"Diagnostics: {{diagnostics}}",detail:"Details: {{detail}}",signInRequired:"Sign in before accessing knowledge bases",forbidden:"You do not have permission to operate on this knowledge base",notFound:"The knowledge base or knowledge content does not exist",conflict:"The knowledge base cannot perform this operation in its current state",requestFailed:"Knowledge base request failed ({{status}})"},Ble={invalidName:"Names must contain 1–128 characters, without control or invisible formatting characters, or < >.",renameProjectFailed:"Unable to update the project name",renameVersionFailed:"Unable to update the version name",invalidNameUpdateResponse:"The name update response does not match the request. Refresh and try again.",invalidSourceSnapshot:"The source snapshot response has an invalid format.",invalidProjectList:"The project list response has an invalid format.",invalidProjectVersion:"The project version response has an invalid format.",loadProjectsFailed:"Unable to load saved projects",loadVersionsFailed:"Unable to load project versions",deleteVersionFailed:"Failed to delete the project version",invalidDeleteVersionResponse:"The project version deletion response has an invalid format.",loadProjectSourceFailed:"Unable to load project source",loadSnapshotFailed:"Unable to load the source snapshot",restoreSnapshotFailed:"Unable to restore the current source snapshot",downloadSourceFailed:"Failed to download the source",downloadNotZip:"The source download response is not a ZIP file.",downloadSizeMismatch:"The source archive size does not match the published record. Try again."},Ule={invalidFormat:"{{label}} has an invalid format.",validationSeparator:"; ",invalidAnalysisResult:"The migration analysis result has an invalid format.",invalidFrameworkCandidate:"A framework candidate has an invalid format.",invalidAnalysisEvidence:"The analysis evidence has an invalid format.",invalidEntryCandidate:"An entry candidate has an invalid format.",invalidQuestion:"A follow-up question has an invalid format.",invalidTask:"The migration session has an invalid format.",invalidAnalysisReference:"The analysis result reference has an invalid format.",invalidSourcePersistence:"The migration source persistence status has an invalid format.",invalidActivity:"The migration activity has an invalid format.",invalidActivityItem:"A migration activity item has an invalid format.",invalidActivityTool:"A migration activity tool item has an invalid format.",invalidActivityPlan:"The migration execution plan has an invalid format.",invalidActivityPlanItem:"A migration execution plan item has an invalid format.",invalidArtifact:"The migration artifact has an invalid format.",invalidEnvironmentDefaults:"The environment variable defaults have an invalid format.",invalidArtifactFile:"A migration artifact file has an invalid format.",invalidVerificationCheck:"A migration verification check has an invalid format.",requestValidationFailed:"Request validation failed: {{detail}}",gatewayError:"{{fallback}} (HTTP {{status}}, Content-Type: {{contentType}}). Check the proxy or gateway configuration.",nonJsonResponse:"{{fallback}}: the server returned a non-JSON response (HTTP {{status}}). Check the proxy or gateway configuration.",loadCapabilitiesFailed:"Failed to load migration capabilities",invalidCapabilities:"The migration capabilities have an invalid format.",invalidModelCapabilities:"The migration model capabilities have an invalid format.",loadTasksFailed:"Failed to load migration sessions",invalidTaskList:"The migration session list has an invalid format.",createTaskFailed:"Failed to create the migration session",uploadProjectFailed:"Failed to upload the migration project",loadActivityFailed:"Failed to load migration activity",startFailed:"Failed to start the migration",submitAnswersFailed:"Failed to submit additional analysis information",stopFailed:"Failed to stop the migration",deleteTaskFailed:"Failed to delete the migration session",loadArtifactFailed:"Failed to load the migration artifact",loadArtifactFileFailed:"Failed to load the migration artifact file",downloadArtifactFailed:"Failed to download the migration artifact",evaluation:{datasetSaveFailed:"Failed to save evaluation cases",datasetLoadFailed:"Failed to load evaluation cases",statusLoadFailed:"Failed to load evaluation status",resumeFailed:"Failed to continue evaluation",retryFailed:"Failed to retry evaluation",reportLoadFailed:"Failed to load the evaluation report",reportDownloadFailed:"Failed to download the evaluation report"},labels:{analysisResult:"Migration analysis result",recommendation:"Migration recommendation",boundary:"Migration boundary",frameworkCandidate:"Framework candidate",analysisEvidence:"Analysis evidence",recommendedFramework:"Recommended framework",entryCandidate:"Entry candidate",entryFramework:"Entry framework",includeScope:"Migration include scope",excludeScope:"Migration exclude scope",assumptions:"Analysis assumptions",question:"Follow-up question",analysisWarnings:"Migration warnings",task:"Migration session",artifactStatus:"Migration artifact status",analysisReference:"Analysis result reference",confirmation:"Migration confirmation",confirmedFramework:"Confirmed framework",error:"Migration error",sourcePersistence:"Migration source persistence status",activity:"Migration activity",activityItem:"Migration activity item",activityTool:"Migration activity tool item",activityPlanItem:"Migration activity plan item",artifact:"Migration artifact",cli:"CLI information",migration:"Migration information",startup:"Startup information",environment:"Environment variable information",verification:"Verification information",report:"Migration report",archive:"Artifact archive",environmentDefaults:"Environment variable defaults",requiredEnvironment:"Required environment variables",optionalEnvironment:"Optional environment variables",artifactFile:"Migration artifact file",verificationCheck:"Migration verification check",artifactWarnings:"Migration artifact warnings",errorResponse:"Error response",errorDetail:"Error details",capabilities:"Migration capabilities",framework:"Migration framework",modelCapabilities:"Migration model capabilities",taskList:"Migration session list",evaluationAsset:"Evaluation asset",evaluation:"Evaluation status",evaluationCapabilities:"Evaluation capabilities",evaluationDimension:"Evaluation dimension",evaluationCase:"Evaluation case",evaluationCriteria:"Evaluation criteria",evaluationMessage:"Evaluation conversation",evaluationDataset:"Evaluation dataset",evaluationDimensionResult:"Evaluation dimension result",evaluationEvidence:"Evaluation evidence",evaluationReport:"Evaluation report",evaluationSummary:"Evaluation summary",evaluationCaseResult:"Evaluation case result",evaluationOutput:"Evaluation output",evaluationLimitations:"Evaluation limitations"}},Qle={status:{ready:"Ready",wakeable:"Asleep",creating:"Creating",starting:"Starting",pending:"Pending",running:"Running",failed:"Error",stopped:"Stopped",expired:"Expired",deleting:"Deleting",deleted:"Deleted",unknown:"Unknown status"},developmentTimeout:"The development environment timed out. The task may still be running; reopen this session later to check its status.",developmentDisconnected:"The connection to the development environment was interrupted. The task may still be running; reopen this session later to check its status.",developmentFailed:"The development task could not continue. The environment was preserved; try again in this session.",invalidStudioResponse:"{{fallback}} Studio returned an invalid response. Refresh and try again.",invalidSession:"AgentKit Sandbox returned invalid session information.",invalidSnapshot:"AgentKit Sandbox returned invalid snapshot information.",invalidSettings:"Sandbox returned invalid settings.",invalidThreadSnapshot:"Sandbox returned an invalid thread snapshot.",emptyConversationResponse:"The Sandbox conversation service returned no content.",invalidConversationResponse:"The Sandbox conversation service returned an unreadable response.",conversationFailed:"The Sandbox conversation failed. Try again later.",emptyReply:"Sandbox did not return a valid reply. Try again.",missingSession:"The AgentKit session is missing.",listCodexFailed:"Unable to load Codex agents. Try again later.",invalidSessionList:"AgentKit Sandbox returned an invalid session list.",invalidSnapshotList:"AgentKit Sandbox returned an invalid snapshot list.",startFailed:"Unable to start AgentKit Sandbox. Try again later.",listAgentFailed:"Unable to load {{kind}} agents. Try again later.",invalidKindSessionList:"AgentKit returned an invalid {{kind}} session list.",invalidKindSnapshotList:"AgentKit returned an invalid {{kind}} snapshot list.",createAgentFailed:"Unable to create a {{kind}} agent. Try again later.",missingSessionToOpen:"The AgentKit session to open is missing.",openAgentFailed:"Unable to open the {{kind}} agent.",invalidAgentHomeUrl:"The {{kind}} agent returned an invalid home URL.",missingSessionForTerminal:"The AgentKit session for the terminal is missing.",openTerminalFailed:"Unable to open the {{kind}} terminal.",deleteAgentFailed:"Unable to delete the {{kind}} agent.",missingSnapshot:"The agent to wake was not found.",resumeSnapshotFailed:"Unable to wake the agent. Try again later.",deleteSnapshotFailed:"Unable to delete the agent. Try again later.",missingSessionToConnect:"The AgentKit session to connect is missing.",connectCodexFailed:"Unable to connect to the Codex agent. Try again later.",sessionNotReady:"The AgentKit session is not ready. Current status: {{status}}.",invalidMessage:"The built-in agent session does not contain a valid message.",interruptFailed:"Unable to stop the current task.",getStatusFailed:"Unable to load Codex status.",getEndpointFailed:"Unable to load the Sandbox endpoint.",invalidEndpoint:"Sandbox returned an invalid endpoint.",createHandoffPairingFailed:"Unable to create a Codex cloud handoff pairing code.",invalidHandoffPairing:"Studio returned an invalid Codex cloud handoff pairing code.",getHandoffStatusFailed:"Unable to load the cloud handoff status.",invalidHandoffStatus:"Studio returned an invalid cloud handoff status.",listModelsFailed:"Unable to load Codex models.",invalidModelList:"Sandbox returned an invalid model list.",setModelFailed:"Unable to switch the Codex model.",invalidModel:"Sandbox returned an invalid model.",listSkillsFailed:"Unable to load Codex Skills.",invalidSkillList:"Sandbox returned an invalid Skill list.",listThreadsFailed:"Unable to load Codex threads.",invalidThreadList:"Sandbox returned an invalid thread list.",createThreadFailed:"Unable to create a new Codex thread.",missingThread:"The Codex thread to read is missing.",readThreadFailed:"Unable to load Codex history.",resumeThreadFailed:"Unable to resume the Codex thread.",forkThreadFailed:"Unable to fork the Codex thread.",archiveThreadFailed:"Unable to archive the Codex thread.",invalidArchiveResult:"Sandbox returned an invalid archive result.",deleteThreadFailed:"Unable to delete the Codex thread.",invalidDeleteResult:"Sandbox returned an invalid deletion result.",compactThreadFailed:"Unable to compact the Codex thread.",getSettingsFailed:"Unable to load Codex permissions and workspace settings.",updatePermissionsFailed:"Unable to update Codex permissions.",updateWorkspaceFailed:"Unable to update the Codex workspace.",invalidWorkingDirectory:"Sandbox returned an invalid working directory.",listDirectoriesFailed:"Unable to load Sandbox directories.",invalidDirectoryList:"Sandbox returned an invalid directory list.",resolveApprovalFailed:"Unable to submit the Codex approval decision.",uploadFileFailed:"Unable to upload the file to Sandbox.",invalidUploadResult:"Sandbox returned an invalid upload result.",disconnectCodexFailed:"Unable to disconnect the Codex agent.",deleteCodexFailed:"Unable to delete the Codex agent.",openSandboxTerminalFailed:"Unable to open the Sandbox terminal.",openSandboxBrowserFailed:"Unable to open the Sandbox browser.",toolLabel:"Sandbox tool",invalidToolUrl:"{{label}} returned an invalid URL.",unsafeToolUrl:"{{label}} returned an unsafe URL."},zle={invalidSandboxVersion:"Invalid sandbox version response",loadSandboxVersionsFailed:"Failed to check sandbox versions",updateSandboxFailed:"Failed to update sandbox",invalidSandboxUpdate:"Invalid sandbox update response",errorWithDetailAndRawResponse:`{{context}}
+ */var fUe=Symbol.for("react.transitional.element"),hUe=Symbol.for("react.fragment");function Ole(e,t,n){var i=null;if(n!==void 0&&(i=""+n),t.key!==void 0&&(i=""+t.key),"key"in t){n={};for(var r in t)r!=="key"&&(n[r]=t[r])}else n=t;return t=n.ref,{$$typeof:fUe,type:e,key:i,ref:t!==void 0?t:null,props:n}}fI.Fragment=hUe;fI.jsx=Ole;fI.jsxs=Ole;wle.exports=fI;var o=wle.exports;const kle={requestFailed:"Request failed ({{status}})",unknownError:"Unknown error",contentTypeMissing:"Content-Type missing",response:"Response: {{response}}",fallbackWithDetail:"{{fallback}}: {{detail}}",fallbackWithHttpStatus:"{{fallback}} (HTTP {{status}})",nonJsonResponse:"{{fallback}}: the server returned a non-JSON response ({{contentType}})"},Sle={unconfigured:"AgentKit Dev Sandbox has not been configured by an administrator.",invalidSession:"AgentKit CLI returned an invalid session.",loadCapabilitiesFailed:"Unable to load the AgentKit CLI configuration.",invalidCapabilities:"AgentKit CLI returned an invalid configuration status.",listSessionsFailed:"Unable to load AgentKit CLI sessions.",invalidSessionList:"AgentKit CLI returned an invalid session list.",createSessionFailed:"Unable to create an AgentKit CLI session.",openSessionFailed:"Unable to open the AgentKit CLI session.",openTerminalFailed:"Unable to open the AgentKit CLI terminal.",invalidTerminalUrl:"AgentKit CLI returned an invalid terminal URL."},Ele={cnBeijing:"China North 2 (Beijing)",cnShanghai:"China East 2 (Shanghai)"},Cle={runtimeUnsupported:"This Runtime does not currently support connections. Confirm that the service is running normally."},Tle={autoConfigureFailed:"Failed to configure the Feishu bot automatically"},Ale={actionFailed:"Failed to {{action}}",detail:"Details: {{detail}}",request:"Request: {{request}}"},_le={persistentMemoryHint:"Tip: The session no longer exists. With in-memory or SQLite short-term memory, sessions may be lost during multi-instance routing, process restarts, or rolling deployments. Use database-backed persistent short-term memory instead.",unsupportedRouteHint:"Tip: This Runtime does not provide the session run API and may be incompatible with the current Studio version.",toolArgumentHint:"Tip: The model generated incomplete tool arguments. Send the request again.",resourceCollectionExpiredHint:"Tip: This resource collection has expired. Send the task again so the system can collect the resources before creating the Agent.",networkConfigurationHint:"Tip: Try again later, and review the Runtime, model, or gateway logs.",modelQuotaHint:"Tip: The model has reached its TPM/RPM quota. Try again later or increase the model quota.",rawResponseLabel:"Raw response: "},jle={httpStatus:"HTTP status: {{status}}",errorCode:"Error code: {{code}}",cloudResponseBody:`Cloud response body:
+{{body}}`,loadFailedWithDetail:"Failed to load instance logs: {{detail}}",invalidFormat:"Failed to load instance logs: the service returned an invalid format"},Nle={untitledSession:"Untitled session",webUnavailable:"Web search is unavailable because /web/search is not enabled on the server.",webFailed:"Web search failed: {{message}}",webNotMounted:"This Agent does not have the web_search tool mounted.",knowledgeNotMounted:"This Agent does not have a knowledge base mounted.",memoryNotMounted:"This Agent does not have long-term memory mounted.",knowledge:"Knowledge base",longTermMemory:"Long-term memory"},Rle={listSpacesFailed:"Failed to load Skill spaces",createSpaceFailed:"Failed to create the Skill space",updateSpaceFailed:"Failed to update the Skill space",deleteSpaceFailed:"Failed to delete the Skill space",uploadFailed:"Failed to upload the Skill",validateFailed:"Failed to validate the Skill",deleteFailed:"Failed to delete the Skill",listFilesFailed:"Failed to load Skill files",downloadFailed:"Failed to download the Skill",sharedSpaceFailed:"Shared space unavailable",reservedSpaceName:"This name is reserved for a system space; choose another name",reviewSpaceFailed:"The review space is unavailable",submitReviewFailed:"Could not submit the publication request",listReviewsFailed:"Could not load review requests",reviewFilesFailed:"Could not load submitted files",decideReviewFailed:"Review failed, please try again",listVersionsFailed:"Unable to load skill versions",uploadVersionFailed:"Unable to upload the new skill version"},Ile={truncatedData:"{{data}}… (truncated, {{count}} characters total)",incompleteEvent:"The stream ended with an incomplete SSE event. Raw data: {{data}}",invalidEventJson:"Failed to parse the SSE event JSON. Raw data: {{data}}"},Ple={loadConfigNetworkFailed:"Unable to load the sign-in configuration. Check your network and try again.",configServiceFailed:"The sign-in configuration service failed (HTTP {{status}}). Try again later.",invalidConfigResponse:"The sign-in configuration service returned an unreadable response. Try again later.",serviceNetworkFailed:"Unable to connect to the identity service. Check your network and try again.",invalidServiceResponse:"The identity service returned an unreadable response. Try again later.",serviceFailed:"The identity service failed (HTTP {{status}}). Try again later."},Dle={invalidToken:"The GitHub token is invalid or does not have repository write access",notFound:"The repository, branch, or file does not exist, or the token cannot access it",rejectedCommit:"GitHub rejected the commit. Check the branch and file state",requestFailed:"GitHub request failed (HTTP {{status}})",networkFailed:"Unable to connect to GitHub. Check your network and try again",invalidRepositoryFormat:"The GitHub repository must use the owner/repository format",insecureRepositoryUrl:"Only secure github.com repository URLs are supported",unsafeProjectPath:"The Agent project directory must be a safe relative path within the repository",tokenRequired:"A GitHub token is required",invalidBaseBranch:"The target branch format is invalid",invalidPublishBranch:"The publish branch format is invalid",noFiles:"There are no files to commit",missingBaseSha:"The target branch does not have a valid Git SHA",fileAlreadyExists:"{{path}} already exists in the target repository; the existing file was not overwritten",pathNotUpdatable:"The target path {{path}} is not an updatable file",invalidPullRequest:"GitHub did not return a valid pull request"},Mle={loadCapabilitiesFailed:"Failed to load video model capabilities",uploadAssetFailed:"Failed to upload {{fileName}}",enhancePromptFailed:"Failed to enhance the prompt",createTaskFailed:"Failed to create the video generation task",getTaskFailed:"Failed to load the video generation task",downloadFailed:"Failed to download the generated video"},Lle={listFailed:"Failed to load website integrations",createFailed:"Failed to create the website integration",deleteFailed:"Failed to delete the website integration"},$le={loadFailed:"Failed to load the knowledge base",htmlHidden:"[HTML content hidden]",redacted:"[redacted]",depthTruncated:"[content nested too deeply; truncated]",circularReference:"[circular reference]",diagnosticsUnavailable:"[diagnostic information unavailable]",statusCode:"Status: {{status}}",errorCode:"Error code: {{code}}",requestId:"Request ID: {{requestId}}",diagnostics:"Diagnostics: {{diagnostics}}",detail:"Details: {{detail}}",signInRequired:"Sign in before accessing knowledge bases",forbidden:"You do not have permission to operate on this knowledge base",notFound:"The knowledge base or knowledge content does not exist",conflict:"The knowledge base cannot perform this operation in its current state",requestFailed:"Knowledge base request failed ({{status}})"},Fle={invalidName:"Names must contain 1–128 characters, without control or invisible formatting characters, or < >.",renameProjectFailed:"Unable to update the project name",renameVersionFailed:"Unable to update the version name",invalidNameUpdateResponse:"The name update response does not match the request. Refresh and try again.",invalidSourceSnapshot:"The source snapshot response has an invalid format.",invalidProjectList:"The project list response has an invalid format.",invalidProjectVersion:"The project version response has an invalid format.",loadProjectsFailed:"Unable to load saved projects",loadVersionsFailed:"Unable to load project versions",deleteVersionFailed:"Failed to delete the project version",invalidDeleteVersionResponse:"The project version deletion response has an invalid format.",loadProjectSourceFailed:"Unable to load project source",loadSnapshotFailed:"Unable to load the source snapshot",restoreSnapshotFailed:"Unable to restore the current source snapshot",downloadSourceFailed:"Failed to download the source",downloadNotZip:"The source download response is not a ZIP file.",downloadSizeMismatch:"The source archive size does not match the published record. Try again."},Ble={invalidFormat:"{{label}} has an invalid format.",validationSeparator:"; ",invalidAnalysisResult:"The migration analysis result has an invalid format.",invalidFrameworkCandidate:"A framework candidate has an invalid format.",invalidAnalysisEvidence:"The analysis evidence has an invalid format.",invalidEntryCandidate:"An entry candidate has an invalid format.",invalidQuestion:"A follow-up question has an invalid format.",invalidTask:"The migration session has an invalid format.",invalidAnalysisReference:"The analysis result reference has an invalid format.",invalidSourcePersistence:"The migration source persistence status has an invalid format.",invalidActivity:"The migration activity has an invalid format.",invalidActivityItem:"A migration activity item has an invalid format.",invalidActivityTool:"A migration activity tool item has an invalid format.",invalidActivityPlan:"The migration execution plan has an invalid format.",invalidActivityPlanItem:"A migration execution plan item has an invalid format.",invalidArtifact:"The migration artifact has an invalid format.",invalidEnvironmentDefaults:"The environment variable defaults have an invalid format.",invalidArtifactFile:"A migration artifact file has an invalid format.",invalidVerificationCheck:"A migration verification check has an invalid format.",requestValidationFailed:"Request validation failed: {{detail}}",gatewayError:"{{fallback}} (HTTP {{status}}, Content-Type: {{contentType}}). Check the proxy or gateway configuration.",nonJsonResponse:"{{fallback}}: the server returned a non-JSON response (HTTP {{status}}). Check the proxy or gateway configuration.",loadCapabilitiesFailed:"Failed to load migration capabilities",invalidCapabilities:"The migration capabilities have an invalid format.",invalidModelCapabilities:"The migration model capabilities have an invalid format.",loadTasksFailed:"Failed to load migration sessions",invalidTaskList:"The migration session list has an invalid format.",createTaskFailed:"Failed to create the migration session",uploadProjectFailed:"Failed to upload the migration project",loadActivityFailed:"Failed to load migration activity",startFailed:"Failed to start the migration",submitAnswersFailed:"Failed to submit additional analysis information",stopFailed:"Failed to stop the migration",deleteTaskFailed:"Failed to delete the migration session",loadArtifactFailed:"Failed to load the migration artifact",loadArtifactFileFailed:"Failed to load the migration artifact file",downloadArtifactFailed:"Failed to download the migration artifact",evaluation:{datasetSaveFailed:"Failed to save evaluation cases",datasetLoadFailed:"Failed to load evaluation cases",statusLoadFailed:"Failed to load evaluation status",resumeFailed:"Failed to continue evaluation",retryFailed:"Failed to retry evaluation",reportLoadFailed:"Failed to load the evaluation report",reportDownloadFailed:"Failed to download the evaluation report"},labels:{analysisResult:"Migration analysis result",recommendation:"Migration recommendation",boundary:"Migration boundary",frameworkCandidate:"Framework candidate",analysisEvidence:"Analysis evidence",recommendedFramework:"Recommended framework",entryCandidate:"Entry candidate",entryFramework:"Entry framework",includeScope:"Migration include scope",excludeScope:"Migration exclude scope",assumptions:"Analysis assumptions",question:"Follow-up question",analysisWarnings:"Migration warnings",task:"Migration session",artifactStatus:"Migration artifact status",analysisReference:"Analysis result reference",confirmation:"Migration confirmation",confirmedFramework:"Confirmed framework",error:"Migration error",sourcePersistence:"Migration source persistence status",activity:"Migration activity",activityItem:"Migration activity item",activityTool:"Migration activity tool item",activityPlanItem:"Migration activity plan item",artifact:"Migration artifact",cli:"CLI information",migration:"Migration information",startup:"Startup information",environment:"Environment variable information",verification:"Verification information",report:"Migration report",archive:"Artifact archive",environmentDefaults:"Environment variable defaults",requiredEnvironment:"Required environment variables",optionalEnvironment:"Optional environment variables",artifactFile:"Migration artifact file",verificationCheck:"Migration verification check",artifactWarnings:"Migration artifact warnings",errorResponse:"Error response",errorDetail:"Error details",capabilities:"Migration capabilities",framework:"Migration framework",modelCapabilities:"Migration model capabilities",taskList:"Migration session list",evaluationAsset:"Evaluation asset",evaluation:"Evaluation status",evaluationCapabilities:"Evaluation capabilities",evaluationDimension:"Evaluation dimension",evaluationCase:"Evaluation case",evaluationCriteria:"Evaluation criteria",evaluationMessage:"Evaluation conversation",evaluationDataset:"Evaluation dataset",evaluationDimensionResult:"Evaluation dimension result",evaluationEvidence:"Evaluation evidence",evaluationReport:"Evaluation report",evaluationSummary:"Evaluation summary",evaluationCaseResult:"Evaluation case result",evaluationOutput:"Evaluation output",evaluationLimitations:"Evaluation limitations"}},Ule={status:{ready:"Ready",wakeable:"Asleep",creating:"Creating",starting:"Starting",pending:"Pending",running:"Running",failed:"Error",stopped:"Stopped",expired:"Expired",deleting:"Deleting",deleted:"Deleted",unknown:"Unknown status"},developmentTimeout:"The development environment timed out. The task may still be running; reopen this session later to check its status.",developmentDisconnected:"The connection to the development environment was interrupted. The task may still be running; reopen this session later to check its status.",developmentFailed:"The development task could not continue. The environment was preserved; try again in this session.",invalidStudioResponse:"{{fallback}} Studio returned an invalid response. Refresh and try again.",invalidSession:"AgentKit Sandbox returned invalid session information.",invalidSnapshot:"AgentKit Sandbox returned invalid snapshot information.",invalidSettings:"Sandbox returned invalid settings.",invalidThreadSnapshot:"Sandbox returned an invalid thread snapshot.",emptyConversationResponse:"The Sandbox conversation service returned no content.",invalidConversationResponse:"The Sandbox conversation service returned an unreadable response.",conversationFailed:"The Sandbox conversation failed. Try again later.",emptyReply:"Sandbox did not return a valid reply. Try again.",missingSession:"The AgentKit session is missing.",listCodexFailed:"Unable to load Codex agents. Try again later.",invalidSessionList:"AgentKit Sandbox returned an invalid session list.",invalidSnapshotList:"AgentKit Sandbox returned an invalid snapshot list.",startFailed:"Unable to start AgentKit Sandbox. Try again later.",listAgentFailed:"Unable to load {{kind}} agents. Try again later.",invalidKindSessionList:"AgentKit returned an invalid {{kind}} session list.",invalidKindSnapshotList:"AgentKit returned an invalid {{kind}} snapshot list.",createAgentFailed:"Unable to create a {{kind}} agent. Try again later.",missingSessionToOpen:"The AgentKit session to open is missing.",openAgentFailed:"Unable to open the {{kind}} agent.",invalidAgentHomeUrl:"The {{kind}} agent returned an invalid home URL.",missingSessionForTerminal:"The AgentKit session for the terminal is missing.",openTerminalFailed:"Unable to open the {{kind}} terminal.",deleteAgentFailed:"Unable to delete the {{kind}} agent.",missingSnapshot:"The agent to wake was not found.",resumeSnapshotFailed:"Unable to wake the agent. Try again later.",deleteSnapshotFailed:"Unable to delete the agent. Try again later.",missingSessionToConnect:"The AgentKit session to connect is missing.",connectCodexFailed:"Unable to connect to the Codex agent. Try again later.",sessionNotReady:"The AgentKit session is not ready. Current status: {{status}}.",invalidMessage:"The built-in agent session does not contain a valid message.",interruptFailed:"Unable to stop the current task.",getStatusFailed:"Unable to load Codex status.",getEndpointFailed:"Unable to load the Sandbox endpoint.",invalidEndpoint:"Sandbox returned an invalid endpoint.",createHandoffPairingFailed:"Unable to create a Codex cloud handoff pairing code.",invalidHandoffPairing:"Studio returned an invalid Codex cloud handoff pairing code.",getHandoffStatusFailed:"Unable to load the cloud handoff status.",invalidHandoffStatus:"Studio returned an invalid cloud handoff status.",listModelsFailed:"Unable to load Codex models.",invalidModelList:"Sandbox returned an invalid model list.",setModelFailed:"Unable to switch the Codex model.",invalidModel:"Sandbox returned an invalid model.",listSkillsFailed:"Unable to load Codex Skills.",invalidSkillList:"Sandbox returned an invalid Skill list.",listThreadsFailed:"Unable to load Codex threads.",invalidThreadList:"Sandbox returned an invalid thread list.",createThreadFailed:"Unable to create a new Codex thread.",missingThread:"The Codex thread to read is missing.",readThreadFailed:"Unable to load Codex history.",resumeThreadFailed:"Unable to resume the Codex thread.",forkThreadFailed:"Unable to fork the Codex thread.",archiveThreadFailed:"Unable to archive the Codex thread.",invalidArchiveResult:"Sandbox returned an invalid archive result.",deleteThreadFailed:"Unable to delete the Codex thread.",invalidDeleteResult:"Sandbox returned an invalid deletion result.",compactThreadFailed:"Unable to compact the Codex thread.",getSettingsFailed:"Unable to load Codex permissions and workspace settings.",updatePermissionsFailed:"Unable to update Codex permissions.",updateWorkspaceFailed:"Unable to update the Codex workspace.",invalidWorkingDirectory:"Sandbox returned an invalid working directory.",listDirectoriesFailed:"Unable to load Sandbox directories.",invalidDirectoryList:"Sandbox returned an invalid directory list.",resolveApprovalFailed:"Unable to submit the Codex approval decision.",uploadFileFailed:"Unable to upload the file to Sandbox.",invalidUploadResult:"Sandbox returned an invalid upload result.",disconnectCodexFailed:"Unable to disconnect the Codex agent.",deleteCodexFailed:"Unable to delete the Codex agent.",openSandboxTerminalFailed:"Unable to open the Sandbox terminal.",openSandboxBrowserFailed:"Unable to open the Sandbox browser.",toolLabel:"Sandbox tool",invalidToolUrl:"{{label}} returned an invalid URL.",unsafeToolUrl:"{{label}} returned an unsafe URL."},Qle={invalidSandboxVersion:"Invalid sandbox version response",loadSandboxVersionsFailed:"Failed to check sandbox versions",updateSandboxFailed:"Failed to update sandbox",invalidSandboxUpdate:"Invalid sandbox update response",errorWithDetailAndRawResponse:`{{context}}
{{detail}}
Response details:
{{response}}`,errorWithRawResponse:`{{context}}
@@ -16,21 +16,21 @@ Response details:
{{response}}`,loadArkApiKeysFailed:"Failed to load Ark API keys",loadModelsFailed:"Failed to load models",runtimeAccessDenied:"This account cannot access the Runtime. Refresh the list or sign in again.",privateRuntimeUnavailable:"The Runtime was deployed, but this Studio cannot access the private Runtime. Use a Studio connected to the same VPC, or deploy with public or public plus VPC access.",runtimeTemporarilyUnavailable:"The Runtime was deployed, but Studio cannot connect yet. The gateway domain may still be propagating, or the current network or DNS cannot reach it. Try connecting again later from Manage Agents.",runtimeConnectionUnsupported:"The Runtime Agent Server does not provide a connection endpoint. Confirm that the Runtime is ready and compatible.",runtimeConnectionDenied:"The Runtime rejected the connection request. Check its authentication configuration.",listAgentsFailed:"Failed to load Agents",invalidListAppsJson:"Runtime /list-apps returned unreadable JSON.",invalidListAppsFormat:"Runtime /list-apps returned an invalid format; expected a non-empty string array.",createSessionFailedWithStatus:"Failed to create session ({{status}})",createSessionFailed:"Failed to create session",getSessionFailed:"Failed to load session",getSessionFailedWithDetail:"Failed to load session ({{status}}): {{detail}}",feedbackRuntimeOnly:"Feedback sync is supported only for sessions connected to an AgentKit Runtime",feedbackRegionMissing:"The Runtime region is missing, so feedback cannot be submitted",submitFeedbackFailed:"Failed to submit feedback",loadEvaluationSetsFailed:"Failed to load evaluation sets",loadAutoEvaluationStatusFailed:"Failed to load automatic evaluation status",loadOptimizationsFailed:"Failed to load optimization suggestions",deleteEvaluationCaseFailed:"Failed to delete the evaluation case",downloadFileFailed:"Failed to download the file",fileUnavailable:"File content is unavailable",uploadFileFailed:"File upload failed",traceDisabled:"Tracing is not enabled for this Agent. Enable it in the console first.",loadTraceFailed:"Failed to load trace data",contentTypeMissing:"Content-Type missing",traceNonJson:"Trace failed: the server returned a non-JSON response ({{contentType}}). Check the Studio API proxy configuration",invalidTraceFormat:"Trace failed: invalid response format",submitIssueFeedbackFailed:"Failed to submit issue feedback",issueFeedbackNotConfirmed:"Failed to submit issue feedback: the server did not confirm the submission",noPreviewableAgent:"This Runtime does not provide an Agent that can be previewed.",agentSearchFailed:"Agent search failed",emptySseBody:"HTTP 200 with an empty SSE response body.",noDisplayableSseReply:"HTTP 200, but the SSE response did not contain a displayable model reply.",firstSseEventTimeout:"No SSE event was received within 60 seconds. Try again later, and review the Runtime, model, or gateway logs.",runSessionFailed:"Session run failed",runSseFailedWithDetail:"run_sse failed ({{status}}): {{detail}}",checkRuntimeNameFailed:"Failed to check the Runtime name",invalidRuntimeNameCheck:"Failed to check the Runtime name: invalid response format",loadCloudResourcesFailed:"Failed to load cloud resources",invalidCloudResources:"The cloud resource list response has an invalid format",invalidEnvironmentMount:"The environment mount response has an invalid format",environmentMountMismatch:"The environment mount response does not match the request",environmentMountNetworkFailed:"Unable to connect to Studio, so the environment was not mounted. Check your network and try again.",environmentMountFailed:"Failed to mount the environment",clipboardUnsupported:"This browser does not support writing to the clipboard.",clipboardWriteFailed:"Unable to write to the clipboard. Check clipboard permissions.",loadSystemInfoFailed:"Failed to load system information",invalidSystemInfo:"The system information response has an invalid format",invalidEnvironmentBuild:"The environment build response has an invalid format",invalidEnvironmentBuildStep:"The environment build step response has an invalid format",invalidEnvironmentManifest:"The environment manifest response has an invalid format",invalidImageRepository:"The environment image repository response has an invalid format",invalidCodeRepository:"The environment code repository response has an invalid format",invalidImageSource:"The environment image source response has an invalid format",invalidEnvironment:"The environment response has an invalid format",invalidWorkspace:"The workspace response has an invalid format",loadWorkspacesFailed:"Failed to load workspaces",invalidWorkspaceList:"The workspace list response has an invalid format",saveWorkspaceFailed:"Failed to save the workspace",deleteWorkspaceFailed:"Failed to delete the workspace",loadEnvironmentsFailed:"Failed to load environments",invalidEnvironmentList:"The environment list response has an invalid format",probeRepositoryFailed:"Failed to inspect the code repository",invalidRepositoryProbe:"The code repository inspection response has an invalid format",exportEnvironmentCodeFailed:"Failed to export the environment share code",invalidEnvironmentCode:"The environment share code response has an invalid format",inspectEnvironmentCodeFailed:"Failed to inspect the environment share code",invalidEnvironmentCodeInspection:"The environment share code inspection response has an invalid format",importEnvironmentCodeFailed:"Failed to import the environment share code",invalidEnvironmentCodeImport:"The environment share code import response has an invalid format",studioUnavailable:"Unable to connect to Studio. Confirm that the backend is running and try again.",saveEnvironmentFailed:"Failed to save the environment",deleteEnvironmentFailed:"Failed to delete the environment",startEnvironmentBuildFailed:"Failed to start the environment build",loadEnvironmentBuildFailed:"Failed to load environment build details",loadEnvironmentManifestFailed:"Failed to load the environment manifest",invalidEnvironmentResource:"The environment resource response has an invalid format",loadEnvironmentResourcesFailed:"Failed to load environment build resources",updateCodexSandboxFailed:"Failed to update Codex Sandbox",invalidCodexSandboxUpdate:"The Codex Sandbox update response has an invalid format",loadUserPoolsFailed:"Failed to load user pools",invalidUserPoolList:"The user pool list response has an invalid format",syncGithubFailed:"Failed to sync GitHub code ({{status}})",validatingMigrationArtifact:"Validating migration artifact",uploadingCodePackage:"Uploading code package",migrationArtifactValidated:"Migration artifact validated",codePackageUploaded:"Code package uploaded",deploymentProgress:{preparing:"Preparing deployment",uploading:"Uploading the code package",building:"Building the image",buildLogsSyncing:"Building the image. Build logs are up to date.",buildLogsComplete:"Build log sync complete.",buildFailedLogsSynced:"Image build failed. Final build logs are available.",buildLogsUnavailable:"Build logs are temporarily unavailable.",finalBuildLogsUnavailable:"Final build logs are temporarily unavailable.",deploying:"Deploying the service",publishing:"Publishing the service",evaluating:"Creating evaluation sets",updating:"Updating the Runtime configuration",completing:"Finalizing deployment",github:"Configuring GitHub delivery",inProgress:"Deployment in progress"},deploymentFailed:"Deployment failed",deploymentDisconnected:"Deployment failed: connection interrupted",deploymentMissingAgentName:"Deployment failed: Agent name missing from response",deploymentMissingConnection:"Deployment failed: AgentKit connection information missing from response",cancelDeploymentFailed:"Failed to cancel deployment ({{status}})",loadFailed:"Failed to load ({{status}})",loadPermissionsFailed:"Failed to load permissions ({{status}})",invalidPermissionResponse:"The permission service returned an unreadable response",checkStudioUpdateFailed:"Failed to check for Studio updates ({{status}})",studioUpdatePreflightFailed:"Studio update permission check failed ({{status}})",submitStudioUpdateFailed:"Failed to submit the Studio update ({{status}})",loadAgentUsageFailed:"Failed to load Agent usage",notProvided:"Not provided",agentUsageNonJson:"Failed to load Agent usage: the server returned a non-JSON response (HTTP {{status}}, Content-Type: {{contentType}}). ",checkStudioGateway:"Confirm that the current service is running in Studio mode and check the proxy or gateway configuration.",agentUsageInvalidJson:"Failed to load Agent usage: the server returned invalid JSON (HTTP {{status}}, Content-Type: {{contentType}}). ",retryCheckGateway:"Try again later. If the problem persists, check the proxy or gateway configuration.",loadCronJobsFailed:"Failed to load scheduled tasks",loadCronJobFailed:"Failed to load scheduled task details",createCronJobFailed:"Failed to create the scheduled task",updateCronJobFailed:"Failed to update the scheduled task",enableCronJobFailed:"Failed to enable the scheduled task",pauseCronJobFailed:"Failed to pause the scheduled task",runCronJobFailed:"Failed to run the scheduled task now",loadCronHistoryFailed:"Failed to load execution history",stopCronRunFailed:"Failed to stop the execution",deleteCronJobFailed:"Failed to delete the scheduled task",loadRuntimeFailed:"Failed to load the Runtime",loadLocalToolsFailed:"Failed to load local tools",connectDynamicRouteFailed:"Failed to connect the Studio dynamic route",a2aProbeDenied:"The Runtime rejected the A2A probe. Check the Runtime authentication configuration.",loadA2aCardFailed:"Failed to load the A2A Agent Card",loadRuntimeApiKeyFailed:"Failed to load the Runtime API key",runtimeApiKeyMissing:"The Runtime did not return a usable API key",loadMcpCredentialsFailed:"Failed to load MCP authentication",invalidMcpCredentials:"Studio returned invalid MCP authentication data",deleteFailed:"Delete failed ({{status}})",runtimeManageForbidden:"This account cannot manage the Runtime.",runtimeNotFound:"The Runtime does not exist or has been deleted.",runtimeUnavailable:"This account cannot access the Runtime.",checkRuntimeUpdateFailed:"Failed to check Runtime update capability (HTTP {{status}}). Try again later.",loadRuntimeDetailFailed:"Failed to load Runtime details",generateProjectFailed:"Failed to generate the project",generateAgentConfigFailed:"Failed to generate the Agent configuration",createDebugRunFailed:"Failed to create the debug run",createDebugSessionFailed:"Failed to create the debug session",loadDebugTraceFailed:"Failed to load the debug trace",invalidDebugTrace:"Failed to load the debug trace: invalid response format",debugRunFailed:"Debug run failed",cleanupDebugRunFailed:"Failed to clean up the debug run",errorWithCloudResponse:`{{context}}
Cloud API: {{action}}
Original cloud response:
-{{response}}`,emptyCloudResponse:"(empty response body)"},Vle={loadFailed:"Failed to load conversation mode capabilities (HTTP {{status}})",invalidResponse:"The conversation mode capabilities response has an invalid format"},Hle={nonJson:"{{fallback}}: the server returned a non-JSON response (HTTP {{status}}, {{contentType}}){{detail}}"},qle={busy:"The workspace is busy. Try again shortly",notFound:"Workspace not found",duplicates:"Multiple personal workspace sessions were found. Contact your administrator",timeout:"Workspace recovery timed out. Your projects are retained. Try again",unavailable:"The workspace cannot be restored right now. Your projects are retained. Try again",persistence:"Persistence is not enabled for this Sandbox. Check the workspace configuration",startup:"Workspace startup failed. Check the Sandbox status",exists:"This project already exists. Open it from the project list",directory:"Project directory not found",configuration:"Configure the workspace Sandbox image first",state:"Could not check workspace status. Try again",list:"Could not restore the workspace or load projects. Try again",create:"Project initialization failed. Check that the image is available and try again",open:"Could not restore the workspace or open the project. Try again",connection:"Could not connect to the workspace. Try again",invalidWorkspaceUrl:"The workspace returned an invalid URL",operation:"Project operation failed. Try again",invalidProjectUrl:"The project URL is invalid",listFallback:"Could not load projects",connectionState:"Could not connect to the workspace. Try again"},Wle={reporting:"Completing delivery details",packaging:"Preparing artifacts",savingVersion:"Saving version",finishing:"Finishing request",submitResult:"Submit build result",requestFailed:"Task request failed. Please retry.",invalidResponse:"Invalid task state response.",eventGap:"Restoring missing task output.",reconnecting:"Reconnecting. Existing output is preserved.",input:{pending:"Queued",sending:"Confirming delivery",delivered:"Delivered",withdrawn:"Not sent"},plan:"Execution plan",diff:"File changes",preparing:"Preparing task",preparingEnvironment:"Preparing development environment…",connectingEnvironment:"Connecting to development environment…",processing:"Processing request",thinking:"Thinking",read:"Read file · {{target}}",listFiles:"List directory · {{target}}",search:"Search · {{target}}",command:"Run command · {{target}}",editFiles:"Edit files · {{target}}",webSearch:"Search web · {{target}}",processSummary:"Processed {{count}} items",duration:"{{seconds}}s",durationUnits:{milliseconds:"{{value}} ms",hours:"{{value}} h",minutes:"{{value}} min",seconds:"{{value}} s"},failedTools:"{{count}} tools failed",toolFailed:"Failed",toolCalls:"{{count}} tool calls",turnDuration:"Turn elapsed {{duration}}",toolDuration:"Tool time {{duration}}",toolDurationPartial:"Recorded tool time {{duration}}",toolDurationHelp:"Sum of tool durations. Parallel calls can exceed turn elapsed time.",turnStatus:{completed:"Completed",failed:"Failed",interrupted:"Interrupted",cancelled:"Interrupted",unavailable:"Task ended"},notReported:"Not reported",partial:"Recorded",partialHelp:"Usage for this turn may be incomplete.",tokenDetails:"Turn token usage",model:"Turn model",totalTokens:"Total",inputTokens:"Input",cachedInputTokens:"Cached input",uncachedInputTokens:"Uncached input",cacheWriteInputTokens:"Cache write",outputTokens:"Output",reasoningOutputTokens:"Reasoning output",cacheHitRate:"Input cache hit rate",tokenHelp:"Cached input and reasoning output are subsets of input and output. Uncached input = input − cached input."},Kle={common:Sle,agentkitCli:Ele,cloudRegion:Cle,connections:Tle,feishuBot:Ale,requestError:_le,runSse:jle,runtimeLogs:Nle,search:Rle,skills:Ile,sse:Ple,identity:Dle,github:Mle,video:Lle,websiteIntegration:$le,knowledge:Fle,intelligentDevelopment:Ble,migrations:Ule,sandbox:Qle,client:zle,newChatCapabilities:Vle,jsonResponse:Hle,workspaceProjects:qle,developmentRuns:Wle},mUe=Object.freeze(Object.defineProperty({__proto__:null,agentkitCli:Ele,client:zle,cloudRegion:Cle,common:Sle,connections:Tle,default:Kle,developmentRuns:Wle,feishuBot:Ale,github:Mle,identity:Dle,intelligentDevelopment:Ble,jsonResponse:Hle,knowledge:Fle,migrations:Ule,newChatCapabilities:Vle,requestError:_le,runSse:jle,runtimeLogs:Nle,sandbox:Qle,search:Rle,skills:Ile,sse:Ple,video:Lle,websiteIntegration:$le,workspaceProjects:qle},Symbol.toStringTag,{value:"Module"})),Gle="Agent reviews",Xle="Request access for everyone in your organization",Yle="Close",Zle="Refresh",Jle="Status",ece="Applicant",tce="Submitted",nce="Current version",ice="Model",rce="Returned by",sce="Approved by",oce="Reviewed",ace="Agent description",lce="Application notes",cce="Return reason",uce="Review comment",dce="Return reason (required)",fce="Content changed after submission; return and submit again",hce="Withdraw to edit this Agent, then submit a new request to publish it",pce="Other users will lose access to this Agent. Unpublish it?",mce="Cancel",gce="Confirm",bce="Saving",yce="Unpublish",vce="Withdraw request",xce="Approve",wce="Publish for everyone",Oce="Request publication",kce="Everyone",Sce={pending:"Pending",approved:"Approved",returned:"Returned",withdrawn:"Withdrawn"},Ece="Search agents or applicants",Cce="Region",Tce="All statuses",Ace="Agent",_ce="Actions",jce="Review application",Nce="Application details",Rce="No matching applications",Ice="No Agent review requests",Pce="{{count}} / {{limit}} characters",gUe={title:Gle,dialogDescription:Xle,close:Yle,refresh:Zle,statusTitle:Jle,submitter:ece,submittedAt:tce,version:nce,model:ice,returnedBy:rce,approvedBy:sce,reviewedAt:oce,description:ace,message:lce,reason:cce,comment:uce,reasonRequired:dce,contentChanged:fce,withdrawConfirm:hce,unpublishConfirm:pce,cancel:mce,confirm:gce,saving:bce,unpublish:yce,withdraw:vce,return:"Return",approve:xce,publish:wce,submit:Oce,private:"Private",enterprise:kce,status:Sce,search:Ece,region:Cce,all:Tce,agent:Ace,actions:_ce,review:jce,details:Nce,noMatches:Rce,empty:Ice,textCount:Pce},bUe=Object.freeze(Object.defineProperty({__proto__:null,actions:_ce,agent:Ace,all:Tce,approve:xce,approvedBy:sce,cancel:mce,close:Yle,comment:uce,confirm:gce,contentChanged:fce,default:gUe,description:ace,details:Nce,dialogDescription:Xle,empty:Ice,enterprise:kce,message:lce,model:ice,noMatches:Rce,publish:wce,reason:cce,reasonRequired:dce,refresh:Zle,region:Cce,returnedBy:rce,review:jce,reviewedAt:oce,saving:bce,search:Ece,status:Sce,statusTitle:Jle,submit:Oce,submittedAt:tce,submitter:ece,textCount:Pce,title:Gle,unpublish:yce,unpublishConfirm:pce,version:nce,withdraw:vce,withdrawConfirm:hce},Symbol.toStringTag,{value:"Module"})),Dce={backToEvaluationCase:"Back to evaluation case",cancel:"Cancel",copied:"Copied",copy:"Copy",exportConversation:"Export conversation",retry:"Retry"},Mce={title:"How would you like to add an Agent?",subtitle:"Choose the approach that best fits your project.",quickCreate:{title:"Create from scratch",description:"Build an Agent with intelligent, custom, template, or workflow modes."},intelligent:{title:"Intelligent mode",description:"Describe your goal, then build, debug, and validate the Agent interactively."},package:{title:"Add and deploy a code package",description:"Upload an Agent project archive, review the code, and deploy it to AgentKit Runtime."},migrate:{title:"Migrate an existing project",description:"Migrate an existing LangChain, Dify, or similar project to AgentKit Runtime."}},Lce={subject:{file:"file changes",command:"command execution"},decision:{accept:"Allowed {{subject}} once",acceptForSession:"Allowed {{subject}} for this session",decline:"Declined {{subject}}",cancel:"Cancelled approval for {{subject}}"},details:{command:"Command",grantRoot:"Authorized path",cwd:"Working directory"}},$ce={noDescription:"No description",region:"Region",unknownAgent:"Unknown Agent"},Fce={agentTransfer:"Agent handoff",annotationHint:"Model response; select text to add an annotation",continueBranch:"Continue with “{{branch}}”",emptyResponse:"This response has no displayable content.",subagentDescription:"Working on a task handed off by the primary Agent."},Bce={title:"Configure {{provider}} credentials",prefix:"Agent Workspace requires {{provider}} credentials. Set",and:"and",suffix:"in the runtime environment, then retry."},Uce={buildRunning:{title:"A build is still running",description:"Leaving will stop this build. The session will remain available in your history.",confirm:"Stop and leave"},deleteThread:{title:"Delete Codex session",description:"Delete “{{name}}” and remove it from your session history?",confirm:"Delete"},returnToCreate:{title:"Return to the create page?",description:"Your current entries will be lost.",confirm:"Return"}},Qce={additionalAgentDeleteFailures:"; {{count}} more failed",agentDeleteFailures:"Failed to delete {{count}} Agents: {{failures}}{{suffix}}",agentToolsMissing:"This Agent is missing required tools: {{tools}}",buildStopUnconfirmed:"You left the development environment, but Studio could not confirm that the build stopped. It may still be running; check its status in session history later.",builtinAgentSendFailed:"Failed to send to the built-in Agent: {{message}}",bytePlusEvaluationUnsupported:"AgentKit evaluation sets are not currently supported on BytePlus",clipboardUnsupported:"This browser does not support writing to the clipboard.",cloudCodexEmptyReply:"The cloud Codex task ended without a response. Send the task again.",cloudCodexSessionMissing:"The cloud Codex session has not appeared in the list yet. Try again shortly.",deploymentRuntimeIdMissing:"Deployment completed without returning a Runtime ID.",environmentExpired:"The selected environment is no longer available. Refresh and select it again.",environmentsLoadFailed:"Failed to load environments",evaluationCaseSessionMissing:"This evaluation case has no session reference and cannot be opened.",evaluationUnsupportedForReply:"This response cannot be added to an evaluation set",firstFrameRequired:"Add a first-frame image before generating from first and last frames.",incompletePromptOptimization:"The prompt optimization result is incomplete. Run the optimization again.",intelligentCapabilityCheckFailed:"Failed to check intelligent development capabilities (HTTP {{status}})",intelligentSessionCreateFailed:"Failed to create the intelligent development session",invalidIntelligentCapability:"The intelligent development capability response is invalid.",localBffToolsNotConfigured:"No tools are configured for the local Studio BFF.",localToolsLoadFailed:"Failed to load local tools",loginPopupBlocked:"The browser blocked the sign-in window. Allow pop-ups and try again.",loginPopupClosed:"The sign-in window was closed. Sign in again to continue.",mediaTooLarge:"{{fileName}} exceeds this platform's media size limit.",mountEnvironmentFailed:"Failed to mount the environment",noConnectedSandbox:"No Sandbox is currently connected.",noCreateAgentPermission:"Your account does not have permission to add Agents.",noManageAgentPermission:"Your account does not have permission to manage Agents.",noOptimizationBaseline:"There is no pre-optimization version available for comparison.",oauthUrlMissing:"The event does not include an authorization URL.",onlyCloudAgentUpdatable:"Only deployed cloud Agents can be updated.",optimizationVersionMissing:"The project version for this optimization could not be found. It may have been deleted.",persistentStorageNotConfigured:"Persistent storage has not been configured by an administrator",readDraftFailed:"Unable to read local drafts. Try again.",runtimeAgentNameMissing:"The Runtime is missing an Agent name and cannot be updated.",runtimeBffToolsDisabled:"BFF tool capabilities are not enabled for this Runtime Agent.",runtimeDeploymentConfigUnavailable:"The Runtime's original deployment configuration cannot be restored, so it cannot be updated safely.",runtimeMissingForConnection:"Runtime information is missing, so the Agent cannot be connected.",runtimeRegionMissingForDelete:"The Runtime is missing region information and cannot be deleted.",runtimeRegionMissingForUpdate:"The Runtime is missing region information and cannot be updated.",runtimeUpdateUnsupported:"This Runtime does not support in-place updates.",sandboxRuntimeUnavailable:"This Agent does not have an available Sandbox Runtime.",sandboxToolsUnavailable:"The current Studio BFF does not provide Sandbox execution tools.",saveDraftLocationRejected:"The browser could not save the current draft location. Check site storage permissions and try again.",saveDraftRejected:"The browser could not save the draft. Try again.",selectSkillToOptimize:"Select a Skill to optimize first.",sessionMissingForMount:"The current session does not exist, so an environment cannot be mounted.",sessionNotReady:"The session is not ready yet.",sessionUnavailable:"The current session is unavailable. Close it and try again.",sourceNotReady:"The source is not ready yet. Return to the conversation to continue.",textVideoRejectsReferences:"Text-to-video does not use reference media. Remove the images or videos first.",videoEditRequiresVideo:"Add the video you want to edit first.",videoExtendRequiresVideo:"Add a source video before extending it.",videoGenerationFailed:"Video generation failed. Try again later.",videoModeUnsupported:"The selected video mode is not supported on this platform.",videoPreviewMissing:"The video task completed, but the server did not return a preview URL.",videoReferenceRequired:"Add at least one reference image or video."},zce={like:"Like",removeLike:"Remove like",dislike:"Dislike",removeDislike:"Remove dislike",reportIssue:"Report an issue",traceFlameGraph:"Tracing flame graph"},Vce={0:"What would you like to work on today?",1:"How can I help?",2:"What would you like me to look into?",3:"Ask me anything",4:"Hi, let's get started",5:"Start a new conversation",6:"What should we tackle first?",7:"Tell me what you have in mind",8:"Where should we begin?",9:"What can I help you with?",10:"Ready to move this forward?",11:"What's most important right now?",12:"Let's get something done today",13:"I'm ready when you are",intelligentDevelopment:"Give your ideas room to grow"},Hce={agentCapabilities:"Checking Agent capabilities…",session:"Loading session…"},qce={cancelled:"Authorization was cancelled.",pasteCallbackUrl:"After authorization, paste the full callback URL from your browser's address bar:",popupBlocked:"The browser blocked the authorization window. Allow pop-ups and try again.",unsupportedUrl:"The authorization URL is not HTTP or HTTPS and was blocked."},Wce={volcengine:"Volcengine"},Kce={checkingPersistence:"Checking persistent storage…",exitDevelopment:"Exit development",fileUploaded:"Uploaded a file to the Sandbox",filesUploaded:"Uploaded {{count}} files to the Sandbox",intelligentDevelopment:"Intelligent development",mode:{readOnly:"Read only",workspaceWrite:"Workspace write",fullAccess:"Full access"},approvalPolicy:{untrusted:"Untrusted commands only",onRequest:"Ask when needed",never:"Never ask"},reviewer:{user:"Ask me",autoReview:"Automatic review"},labels:{approvalPolicy:"Approval policy",file:"File",fileNumber:"File {{number}}",mode:"Sandbox mode",networkAccess:"Network access",reviewer:"Approval method",workingDirectory:"Working directory"},network:{allowed:"Allowed",disabled:"Off"},permissionsUpdated:"Updated Codex permissions for this Sandbox session",persistenceUnknown:"Unable to verify persistent storage",stoppedReady:"Stopped. You can continue typing.",uploadedFilesPrompt:"The following files were uploaded to the current Sandbox workspace. Use them in this task:",workspaceUpdated:"Workspace updated"},Gce={addAgent:"Add Agent",addFromPackage:"Add from code package",agent:"Agent",automations:"Automations",createAgent:"Create Agent",createSkill:"Create Skill",cronJobs:"Cronjob",issueFeedback:"Issue feedback",library:"Library",migrateAgent:"Migrate Agent",newConversation:"New conversation",optimizeSkill:"Optimize {{name}}",search:"Search",skill:"Skill",skillLibrary:"Skill library",systemInfo:"System information",updateAgent:"Update {{name}}",codeProjects:"Code projects",reviewCenter:"Review center"},Xce={title:"Create from workspace",description:"Create and manage code projects, then develop and debug in VS Code"},Yce={actions:Dce,addAgent:Mce,approval:Lce,common:$ce,conversation:Fce,credentials:Bce,dialogs:Uce,errors:Qce,feedback:zce,greetings:Vce,loading:Hce,oauth:qce,providers:Wce,sandbox:Kce,titles:Gce,workspaceProjectEntry:Xce},yUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Dce,addAgent:Mce,approval:Lce,common:$ce,conversation:Fce,credentials:Bce,default:Yce,dialogs:Uce,errors:Qce,feedback:zce,greetings:Vce,loading:Hce,oauth:qce,providers:Wce,sandbox:Kce,titles:Gce,workspaceProjectEntry:Xce},Symbol.toStringTag,{value:"Module"})),Zce="Automations",Jce="Connect development tools and extend your Agents with automated workflows",eue="Search automations",tue="Automation categories",nue={development:"Development",channels:"Messaging channels"},iue="{{category}} automations",rue="Open {{name}}",sue="Available only in local deployments",oue="No matching automations",aue="Try searching for another name",lue="Back to automations",cue={"coding-agents":{name:"Configure coding agents",badge:"Local",description:"Install built-in VeADK and AgentKit skills globally for Trae, Claude Code, or Codex."},template:{name:"Import starter project",description:"Create a minimal Agent project in your repository with continuous delivery to AgentKit Runtime.",title:"Import starter project",subtitle:"Add a ready-to-run basic Agent and continuous delivery configuration to your repository",panel:"This creates a pull request containing the basic project and AgentKit Runtime delivery workflow.",submitLabel:"Import template and create PR",regionHelp:"Must match the target Runtime region",pullRequest:{title:"feat: import AgentKit basic template",description:"Import a basic Agent project with the AgentKit Studio App Server and add continuous delivery to AgentKit Runtime. Configure the required {{provider}} secrets before merging."},fields:{repository:{label:"GitHub Repo",placeholder:"owner/repository",help:"Enter owner/repository or a full github.com URL"},baseBranch:{label:"Target branch",placeholder:"main",help:"Defaults to main; the pull request will use this branch as its base"},projectPath:{label:"Agent project directory",placeholder:"agentkit-basic-agent",help:"The basic project will be added here; app.py mounts the complete Studio App Server and serves as the entry point"},runtimeName:{label:"Runtime name",placeholder:"support-agent",help:"Used by the AgentKit delivery configuration"},runtimeId:{label:"Runtime ID",placeholder:"rt-xxxxxxxx",help:"The AgentKit Runtime that will receive continuous updates"}}},delivery:{name:"AgentKit Runtime delivery",description:"Add a workflow that continuously delivers your repository to AgentKit Runtime.",title:"AgentKit Runtime delivery",subtitle:"Add continuous delivery to the repository through a pull request",panel:"This creates a release branch and opens a pull request containing the GitHub Actions workflow.",submitLabel:"Confirm and create PR",regionHelp:"Must match the target Runtime region",pullRequest:{title:"feat: continuously publish to AgentKit Runtime",description:"Add a GitHub Actions workflow that continuously publishes updates from the target branch to AgentKit Runtime. Configure the required {{provider}} secrets before merging."},fields:{repository:{label:"GitHub Repo",placeholder:"owner/repository",help:"Enter owner/repository or a full github.com URL"},baseBranch:{label:"Target branch",placeholder:"main",help:"Defaults to main; the pull request will use this branch as its base"},projectPath:{label:"Agent project directory",placeholder:".",help:"Defaults to the repository root; the directory must contain an app.py that mounts the complete Studio App Server"},runtimeName:{label:"Runtime name",placeholder:"support-agent",help:"Used by the AgentKit delivery configuration"},runtimeId:{label:"Runtime ID",placeholder:"rt-xxxxxxxx",help:"The AgentKit Runtime that will receive continuous updates"}}},review:{name:"Automated PR review",description:"Use a GitHub App to review pull requests in an isolated Sandbox.",title:"Automated PR review",subtitle:"Trigger Sandbox reviews through the GitHub App and publish results to pull requests",panel:"Install the GitHub App to target repositories, then enable automated review for each repository.",submitLabel:"Install GitHub App",regionHelp:"",pullRequest:{title:"chore: configure automated PR review",description:"Add a GitHub Actions workflow that reviews same-repository pull requests in an isolated Sandbox and publishes the result as a GitHub review. Configure the required workflow secrets before merging."},fields:{repository:{label:"GitHub Repo",placeholder:"owner/repository",help:"Enter owner/repository or a full github.com URL"},baseBranch:{label:"Target branch",placeholder:"main",help:"Defaults to main; the pull request will use this branch as its base"},sandboxToolId:{label:"Sandbox Tool ID",placeholder:"tool-xxxxxxxx",help:"The AgentKit CodeEnv used for each review"},modelName:{label:"Review model",placeholder:"review-model",help:"The code review model name injected into the Sandbox"},modelBaseUrl:{label:"Model API URL",placeholder:"https://ark.example.com/api/v3",help:"Must be an OpenAI-compatible HTTPS endpoint"}}},"gitlab-review":{name:"GitLab MR review",description:"Use a GitLab integration to review merge requests in an isolated Sandbox."},feishu:{name:"Feishu bot",badge:"Beta",description:"Create a Feishu bot and connect its messages directly to AgentKit Runtime."},"website-integration":{name:"Website integration",description:"Embed an AgentKit Runtime on your website as a floating chat window."}},uue={required:"Required",optional:"Optional",region:"Region",tokenLabel:"GitHub Token",getToken:"Get token",createToken:"Create GitHub token",tokenPlaceholder:"Requires write access to repository contents and pull requests",tokenWorkflowPlaceholder:"Requires write access to contents, pull requests, and workflows",hideToken:"Hide token",showToken:"Show token",tokenHelp:"The token is used only for this submission. It is not stored in the browser or written to the pull request.",tokenWorkflowHelp:"This token is used only to create the configuration PR. It is not a general Sandbox requirement and is not stored in the browser or written to the PR.",prCreated:"PR #{{number}} created",configPrCreated:"Configuration PR #{{number}} created",configPrNextStep:"After it is merged, later pull requests in the same repository will trigger reviews automatically.",viewOnGitHub:"View on GitHub",viewConfigPr:"View configuration PR",secretsHeading:"Before merging the pull request, configure these GitHub Actions secrets in the repository:",secretsConfigHeading:"Before merging the configuration PR, add runtime secrets to the target repository",openSecrets:"Open Secrets settings",secretsPath:"Path: Settings → Secrets and variables → Actions → Repository secrets",repositoryConfigHelp:"A PR review configuration will be added for {{repository}}",repositoryReviewHelp:"GitHub App will validate pull requests for {{repository}}",secretPair:"{{accessKey}}, {{secretKey}} (required)",sessionToken:"{{sessionToken}} (required when using temporary credentials)",requiredSecret:"{{name}} (required)",temporaryCredentialRequired:" (required when using temporary credentials)",requiredSuffix:" (required)",submitting:"Creating PR…",validation:{required:"This field is required",repository:"Enter owner/repository or a full GitHub repository URL",baseBranch:"The target branch format is invalid",projectPath:"Enter a relative path within the repository",runtimeId:"The Runtime ID format is invalid",sandboxToolId:"The Sandbox Tool ID format is invalid",modelName:"The model name format is invalid",modelBaseUrlSafe:"Enter an HTTPS URL without credentials, query parameters, or fragments",modelBaseUrl:"Enter a valid HTTPS URL",runtimeName:{required:"Runtime name is required",characters:"Runtime name can contain only letters, numbers, underscores, and hyphens",length:"Runtime name must be 4–64 characters"}}},due={title:"Configure coding agents",description:"Install the AgentKit skills bundled with Studio globally for local coding clients.",retry:"Retry",clients:{ariaLabel:"Select coding agents",title:"Local clients",detectAgain:"Detect again",detecting:"Detecting local clients…",detected:"Client detected",available:"Available",unavailable:"Not detected"},skills:{ariaLabel:"Select bundled skills",title:"Bundled skills",viewFiles:"View files",items:{"veadk-agent-development":{name:"VeADK Agent development",description:"Build and refine Agents with VeADK."},"agentkit-cli":{name:"AgentKit CLI",description:"Manage and deploy AgentKit resources with AgentKit CLI."}}},global:{ariaLabel:"Global installation directories",title:"Global installation",description:"Available to other local projects after configuration",empty:"Select a client to see its installation directory."},success:"Configured {{skillCount}} skill(s) for {{agentCount}} client(s)",selection:"{{agentCount}} client(s) and {{skillCount}} skill(s) selected",selectClient:"Select a client first",configuring:"Configuring…",configure:"Configure",errors:{detect:"Failed to detect local clients",configure:"Configuration failed. Check permissions for your user directory and try again."},preview:{description:"Browse the skill files bundled with Studio in read-only mode",close:"Close file preview",loading:"Loading files…",error:"Failed to load skill files",skillFiles:"{{name}} files",files:"Files",fileContent:"File contents",notPreviewable:"This file is not previewable UTF-8 text.",noFiles:"No previewable files."}},fue={title:"Feishu bot",description:"Create a Feishu Agent powered by AgentKit Runtime",panel:"Enter the credentials for a published Feishu app. Studio will generate a basic Agent, create a dedicated Runtime, and enable the persistent Feishu messaging connection.",agentName:"Agent name",agentNameHelp:"Used as the root Agent name in the new Runtime",region:"Deployment region",regionHelp:"The Runtime and build artifacts will be created in this region",regions:{"cn-beijing":"Beijing","cn-shanghai":"Shanghai"},appId:"Feishu App ID",appIdHelp:"Application credential from the Feishu Open Platform",appSecret:"Feishu App Secret",appSecretPlaceholder:"Enter the App Secret",appSecretHelp:"Written only to the environment variables of the new Runtime",hideSecret:"Hide App Secret",showSecret:"Show App Secret",hide:"Hide",show:"Show",confirmCancel:"Cancelling will stop the task and clean up any Runtime already created. Continue?",status:{preparing:"Generating the basic Agent",running:"Creating Runtime",cancelling:"Cancelling deployment",succeeded:"Feishu bot Runtime created",cancelled:"Deployment cancelled",failed:"Creation failed"},steps:{prepare:"Generate Agent",build:"Build image",deploy:"Create Runtime",publish:"Publish service"},openConsole:"Open Runtime console",credentials:{title:"Credential handling",description:"The App Secret is used only for this deployment. It is never written to generated source code or browser storage."},cancelDeployment:"Cancel deployment",creating:"Creating…",create:"Create Feishu bot Runtime",validation:{appId:"Enter the Feishu App ID",appSecret:"Enter the Feishu App Secret",agentName:{required:"Name is required",reserved:"user is reserved by Google ADK. Choose another name",characters:"Name must start with a letter or underscore and contain only letters, numbers, and underscores"}},generatedAgent:{description:"A helpful assistant that receives messages through Feishu.",instruction:"You are a helpful assistant serving users through Feishu. Understand each request accurately and provide concise, reliable answers. Ask clarifying questions when information is missing, and never invent facts."}},hue={title:Zce,description:Jce,search:eue,categoriesLabel:tue,categories:nue,resultsLabel:iue,open:rue,localOnly:sue,emptyTitle:oue,emptyDescription:aue,backToAutomations:lue,cards:cue,github:uue,codingAgents:due,feishu:fue},vUe=Object.freeze(Object.defineProperty({__proto__:null,backToAutomations:lue,cards:cue,categories:nue,categoriesLabel:tue,codingAgents:due,default:hue,description:Jce,emptyDescription:aue,emptyTitle:oue,feishu:fue,github:uue,localOnly:sue,open:rue,resultsLabel:iue,search:eue,title:Zce},Symbol.toStringTag,{value:"Module"})),pue={"zh-CN":"简体中文","en-US":"English"},xUe={languageNames:pue},wUe=Object.freeze(Object.defineProperty({__proto__:null,default:xUe,languageNames:pue},Symbol.toStringTag,{value:"Module"})),mue={selectedExcerptLabel:"Selected excerpt",commentLabel:"Annotation",commentSeparator:": ",successTitle:"Added to the Bad Case evaluation set",successDescription:"This annotation is linked to the current question and the complete model response.",done:"Done",ariaLabel:"Annotate the selected model response",title:"Add annotation",content:"Annotation",placeholder:"Describe the issue or the expected change",retryError:"{{error}}. Please try again.",cancel:"Cancel",submit:"Add to Bad Case"},gue={attachment:"attachment",image:"image",preview:"Preview {{name}}",uploading:"Uploading",uploadFailed:"Upload failed",remove:"Remove {{name}}",previewDialog:"{{name}} preview",download:"Download",close:"Close",reading:"Loading document…",loadFailed:"Failed to load document: {{error}}"},bue={errorTitle:"Cloud log error",copyError:"Copy complete error details",retry:"Retry",statuses:{live:"Live",connecting:"Connecting",retrying:"Reconnecting",idle:"Disconnected"},title:"Instance logs",description:"The VeFaaS instance handling the current conversation request",close:"Close instance logs",instanceId:"Instance ID",waitingInstance:"Waiting for instance",request:"Request {{id}}",ariaLabel:"Live VeFaaS instance logs",notCapturedTitle:"No instance captured yet",notCapturedDescription:"Send a message to see the instance that handles it and its live logs.",connectingTitle:"Connecting to instance logs",connectingDescription:"Establishing a secure log stream through the Studio BFF.",emptyTitle:"No logs yet",emptyDescription:"Connected to the instance and waiting for new log output.",retention:"Logs refresh automatically. Only the latest {{count}} lines are kept."},yue={title:"Trace",statuses:{loading:"Loading",ready:"",collecting:"Collecting",disabled:"Disabled",forbidden:"Permission required",error:"Failed to load"},errors:{collecting:"The trace is still being collected. Please wait.",disabled:"Tracing is not enabled for this agent. Enable it in the console and try again.",forbidden:"Your account cannot read APMPlus traces. Ask an administrator for read access.",error:"Failed to load the trace. Please try again later."},callCount:"{{count}} calls · {{duration}} ms",close:"Close",loading:"Loading trace…",retryNow:"Retry now",reload:"Reload",empty:"No trace is available for this session yet.",attributes:"Attributes",selectCall:"Select a call on the left to view its details"},vue={exportNote:"This conversation was exported from AgentKit Studio for reference only.",imageFailed:"Failed to generate the image. Please try again.",browserUnsupported:"This browser cannot generate a conversation image. Please try again.",copyUnsupported:"This browser cannot copy images. Download the image instead.",exportFailed:"Export failed. Please try again.",title:"Export conversation",description:"Choose a format and download all inputs and outputs through the current response.",close:"Close",generatingContent:"Preparing export…",retry:"Try again",previewPage:"Previewing page 1 of {{count}}",previewAlt:"Conversation export page 1 of {{count}}",format:"Export format",generatingFormat:"Generating {{format}}…",copying:"Copying…",copiedFirst:"First page copied",copied:"Copied",copyFirst:"Copy first page",copyImage:"Copy image",generating:"Generating…",downloadArchive:"Download PNG archive ({{count}} pages)",downloadFormat:"Download {{format}}"},xue={unsupportedComponent:"Unsupported component: {{component}}",sandboxIdentity:"Codex Sandbox execution identifiers",useSkill:"Use the {{name}} skill",thinkingDone:"Finished thinking",thinking:"Thinking",justNow:"Just now",sourceUnavailable:"The generated source is temporarily unavailable. Please try again later.",downloadStarted:"Download started",verifiedDelivery:"Verified deliverable",generatedSource:"Generated agent source",entryPoint:"Entry point",fileCount:"Files",size:"Size",validationTime:"Validated",generationTime:"Generated",checksPassed:"{{count}} checks passed",sourceReady:"Source is ready to deploy",sourceGuidance:"The source is ready to view, download, or deploy. Confirm the runtime configuration before deployment.",viewSource:"View source",preparing:"Preparing…",viewChanges:"View changes",downloadSource:"Download source",sourceNotReady:"The source is not ready yet",manualDeploy:"Deploy manually to Runtime",deployAgent:"Deploy Agent",beforeOptimization:"Before optimization",afterOptimization:"After optimization",planStatuses:{pending:"Pending",in_progress:"In progress",completed:"Completed",failed:"Incomplete"},renderUi:"Render UI",truncated:"… (truncated)",agentAdjusting:"Agent is adjusting",sandboxDetails:"Detailed Codex Sandbox output",waitingCodex:"Waiting for Codex output",arguments:"Arguments",result:"Result",artifacts:"Artifacts",downloadNamed:"Download {{name}}",powerpoint:"PowerPoint presentation",preview:"Preview",download:"Download",previewDialog:"{{name}} preview",closePreview:"Close preview",slidePreview:"{{name}} slide preview",mcpToolset:"MCP toolset",authorized:"Authorized · {{tool}}",authorizationRequired:"{{tool}} requires authorization",oauthDescription:"The {{tool}} toolset is protected by OAuth and requires sign-in before use.",oauthProvider:"You will be redirected to {{provider}} to sign in.",oauthContinue:"The conversation will continue automatically after authorization.",waitingAuthorization:"Waiting for authorization…",authorize:"Authorize",missingAuthorizationUrl:"No authorization URL was found in the event.",tools:{web_search:{running:"Searching the web",done:"Web search complete"},link_reader:{running:"Reading webpage",done:"Webpage read complete"},run_code:{running:"Running code in the AgentKit sandbox",done:"Code execution completed in the AgentKit sandbox"},list_envs:{running:"Checking available environments",done:"Available environments loaded"},get_env_manifest:{running:"Loading the environment manifest",done:"Environment manifest loaded"},execute_in_sandbox:{running:"Running a command in the environment",done:"Command completed in the environment"},delegate_to_codex_sandbox:{running:"Codex Sandbox is running",done:"Codex Sandbox completed",failed:"Codex Sandbox failed"},image_generate:{running:"Generating image",done:"Image generated"},video_generate:{running:"Generating video",done:"Video generated"},ppt_generate:{running:"Generating presentation",done:"Presentation generated"},load_memory:{running:"Searching long-term memory",done:"Memory search complete"},load_knowledgebase:{running:"Searching the knowledge base",done:"Knowledge base search complete"},load_skill:{running:"Loading skill",done:"Skill loaded"},collect_resources:{running:"Collecting available resources",done:"Resource collection complete",failed:"Resource collection failed"},create_agents:{running:"Creating and running agents",done:"Agent creation complete",failed:"Agent creation failed"}},createAgents:{categories:{skill_hub:"Skill Hub",skill_space:"AgentKit Skill Center",knowledge_base:"Knowledge base",tool:"Tools"},agentTypes:{llm:"LLM Agent",sequential:"Sequential Agent",parallel:"Parallel Agent",loop:"Loop Agent",workflow:"Workflow"},skill:"Skill",subAgents:"Sub-agents",builtinTool:"Built-in tool",skillCenter:"AgentKit Skill Center",selfAuthoredTools:"Custom tools",dependencies:"Dependencies: {{items}}",fullCode:"Complete code for {{name}}",itemCount:"{{label}}: {{count}} items",collectionAria:"Retrieved resource information",retrieving:"Retrieving resources",retrievalFailed:"Resource retrieval did not complete",checkConfig:"Check the resource service configuration and try again.",notSearched:"Not searched",notConfigured:"Not configured",resourceList:"{{label}} resource list",searchKeywords:"Search keywords",skillHubSkipped:"No search keywords were provided, so Skill Hub was not searched.",sourceSkipped:"{{label}} is not configured, so this source was not searched.",noResources:"No resources in this category were returned.",resultAria:"Agent creation results",creationFailed:"Agent creation did not complete",agentResources:"Resources available to {{name}}",knowledgeBase:"Knowledge base",toolsLabel:"Tools",creating:"Creating agents",noAgents:"No agents to display",noAgentResult:"The tool response did not include an agent configuration or execution result.",sourceLabels:{tool:"Tools",knowledge:"AgentKit Knowledge Base",skillCenter:"AgentKit Skill Center",unknown:"Unknown source"},unnamedResource:"Unnamed resource",unnamedAgent:"Unnamed agent"},branchCompare:{ariaLabel:"Compare branches",selectDirection:"Select a direction",continue:"Continue in this direction"},codexProgress:{planTitle:"Codex execution plan",fallback:{fileChange:"Modify files",approval:"Waiting for approval",status:"Codex status",command:"Run command"},planSummary:"{{completed}}/{{total}} completed",command:{running:"Running command",completed:"Command completed",failed:"Command failed"},projectFiles:"{{count}} project files",projectFile:"project files",fileChange:{running:"Updating {{subject}}",completed:"Updated {{subject}}",failed:"Failed to update {{subject}}"},externalTool:"external tool",mcp:{running:"Calling {{tool}}",completed:"Called {{tool}}",failed:"{{tool}} call did not complete"},collaboration:{spawn_agent:{running:"Starting subtask",completed:"Subtask started",failed:"Failed to start subtask"},send_input:{running:"Sending information to subtask",completed:"Information sent to subtask",failed:"Failed to send information to subtask"},wait:{running:"Waiting for subtask",completed:"Subtask wait complete",failed:"Subtask wait failed"},close_agent:{running:"Ending subtask",completed:"Subtask ended",failed:"Failed to end subtask"},default:{running:"Coordinating subtasks",completed:"Subtask collaboration complete",failed:"Subtask collaboration failed"}},webSearch:{running:"Searching the web",completed:"Web search complete",failed:"Web search did not complete"},errorDetail:"Codex execution did not complete.",errorTitle:"Codex encountered an error"}},wue={segments:{system:"System and tools",input:"Input and history",output:"Output and reasoning",remaining:"Remaining"},modelUnavailable:"Model information unavailable",promptWithSystem:"Prompt (including system)",systemUnknown:"System and tool usage unknown",systemApprox:"System and tools approximately {{count}} tokens",ariaKnown:"Context {{percentage}}% used, {{system}}, {{inputLabel}} {{input}} tokens, output and reasoning {{output}} tokens, remaining {{remaining}} tokens",ariaUnknown:"{{model}}, context window unknown, {{count}} cumulative session tokens used",composition:"Context composition",percentageUsed:"{{percentage}}% used",gridAria:"100-cell context composition chart. Each cell represents one percent of the context window.",estimated:"Estimated",unknown:"Unknown",summaryPercentage:"{{used}} used, {{remaining}} remaining",summaryTokens:"{{used}} used, {{remaining}} remaining, {{total}} total",overflow:"Context exceeded by {{count}} tokens",title:"Context usage",unknownModel:"The context window for this model is not available",unknownRuntime:"The current runtime did not provide model information"},Oue={title:"Add AgentKit agent",noAgents:"Connected successfully, but no agents were found at this address (/list-apps was empty).",connectionFailed:"Connection failed: {{error}}. Check the URL, API key, and whether the gateway allows cross-origin requests.",description:"Enter the URL and API key of an AgentKit deployment to connect through the ADK protocol. Connected agents will appear in the selector in the upper-left corner.",url:"Endpoint URL",apiKeyHint:"Connect using Authorization: Bearer",displayName:"Display name (optional)",displayNameHint:"Uses the URL hostname by default",cancel:"Cancel",connecting:"Connecting…",connect:"Connect and add"},kue={placeholder:"Type a message…",inputAria:"Message",generating:"Generating",send:"Send"},Sue={ariaLabel:"Invocation context for this turn",removeSkill:"Remove skill {{name}}",removeAgent:"Remove agent {{name}}"},Eue={cardAria:"{{label}} chart",viewAria:"{{label}} display mode",preview:"Preview",code:"Code",invalidEcharts:"The ECharts configuration is not a valid, safe data object. Switch to Code to inspect it.",renderFailed:"The chart cannot be rendered right now. Switch to Code to inspect it.",echartsAria:"ECharts preview",rendering:"Rendering chart…",mermaidFailed:"The chart cannot be rendered right now. Switch to Code to inspect the Mermaid source.",mermaidAria:"Mermaid preview"},Cue={playVideo:"Play video: {{name}}",enlargeImage:"Enlarge image preview: {{name}}",image:"image",enlargeVideo:"Enlarge video",videoPreview:"Video preview",downloadVideo:"Download video",close:"Close"},Tue={annotation:mue,media:gue,runtimeLogs:bue,trace:yue,share:vue,blocks:xue,tokenUsage:wue,addAgentKit:Oue,composer:kue,invocation:Sue,visualization:Eue,markdown:Cue},OUe=Object.freeze(Object.defineProperty({__proto__:null,addAgentKit:Oue,annotation:mue,blocks:xue,composer:kue,default:Tue,invocation:Sue,markdown:Cue,media:gue,runtimeLogs:bue,share:vue,tokenUsage:wue,trace:yue,visualization:Eue},Symbol.toStringTag,{value:"Module"})),Aue={back:"Back",cancel:"Cancel",deploy:"Deploy",delete:"Delete",loading:"Loading…",next:"Next",notSupported:"Not supported",previous:"Previous",required:"Required",retry:"Retry",actions:"Actions",value:"Value",disabled:"Off",enabled:"Enabled",none:"None",close:"Close",name:"Name",description:"Description",send:"Send"},_ue={heading:"VeADK agent structure configuration",importHint:"Reload this file from Import YAML on the Create Agent page."},jue={agentName:{required:"Name is required",reserved:"user is reserved by Google ADK. Choose another name.",characters:"Start with a letter or underscore and use only letters, numbers, and underscores"},runtimeName:{required:"Runtime name is required",characters:"Runtime name can contain only letters, numbers, underscores, and hyphens",length:"Runtime name must be 4–64 characters"}},Nue={description:"A VeADK-powered assistant that understands user intent and uses the right tools to complete tasks.",instruction:`You are a professional and reliable assistant.
+{{response}}`,emptyCloudResponse:"(empty response body)"},zle={loadFailed:"Failed to load conversation mode capabilities (HTTP {{status}})",invalidResponse:"The conversation mode capabilities response has an invalid format"},Vle={nonJson:"{{fallback}}: the server returned a non-JSON response (HTTP {{status}}, {{contentType}}){{detail}}"},Hle={busy:"The workspace is busy. Try again shortly",notFound:"Workspace not found",duplicates:"Multiple personal workspace sessions were found. Contact your administrator",timeout:"Workspace recovery timed out. Your projects are retained. Try again",unavailable:"The workspace cannot be restored right now. Your projects are retained. Try again",persistence:"Persistence is not enabled for this Sandbox. Check the workspace configuration",startup:"Workspace startup failed. Check the Sandbox status",exists:"This project already exists. Open it from the project list",directory:"Project directory not found",configuration:"Configure the workspace Sandbox image first",state:"Could not check workspace status. Try again",list:"Could not restore the workspace or load projects. Try again",create:"Project initialization failed. Check that the image is available and try again",open:"Could not restore the workspace or open the project. Try again",connection:"Could not connect to the workspace. Try again",invalidWorkspaceUrl:"The workspace returned an invalid URL",operation:"Project operation failed. Try again",invalidProjectUrl:"The project URL is invalid",listFallback:"Could not load projects",connectionState:"Could not connect to the workspace. Try again"},qle={reporting:"Completing delivery details",packaging:"Preparing artifacts",savingVersion:"Saving version",finishing:"Finishing request",submitResult:"Submit build result",requestFailed:"Task request failed. Please retry.",invalidResponse:"Invalid task state response.",eventGap:"Restoring missing task output.",reconnecting:"Reconnecting. Existing output is preserved.",input:{pending:"Queued",sending:"Confirming delivery",delivered:"Delivered",withdrawn:"Not sent"},plan:"Execution plan",diff:"File changes",preparing:"Preparing task",preparingEnvironment:"Preparing development environment…",connectingEnvironment:"Connecting to development environment…",processing:"Processing request",thinking:"Thinking",read:"Read file · {{target}}",listFiles:"List directory · {{target}}",search:"Search · {{target}}",command:"Run command · {{target}}",editFiles:"Edit files · {{target}}",webSearch:"Search web · {{target}}",processSummary:"Processed {{count}} items",duration:"{{seconds}}s",durationUnits:{milliseconds:"{{value}} ms",hours:"{{value}} h",minutes:"{{value}} min",seconds:"{{value}} s"},failedTools:"{{count}} tools failed",toolFailed:"Failed",toolCalls:"{{count}} tool calls",turnDuration:"Turn elapsed {{duration}}",toolDuration:"Tool time {{duration}}",toolDurationPartial:"Recorded tool time {{duration}}",toolDurationHelp:"Sum of tool durations. Parallel calls can exceed turn elapsed time.",turnStatus:{completed:"Completed",failed:"Failed",interrupted:"Interrupted",cancelled:"Interrupted",unavailable:"Task ended"},notReported:"Not reported",partial:"Recorded",partialHelp:"Usage for this turn may be incomplete.",tokenDetails:"Turn token usage",model:"Turn model",totalTokens:"Total",inputTokens:"Input",cachedInputTokens:"Cached input",uncachedInputTokens:"Uncached input",cacheWriteInputTokens:"Cache write",outputTokens:"Output",reasoningOutputTokens:"Reasoning output",cacheHitRate:"Input cache hit rate",tokenHelp:"Cached input and reasoning output are subsets of input and output. Uncached input = input − cached input."},Wle={common:kle,agentkitCli:Sle,cloudRegion:Ele,connections:Cle,feishuBot:Tle,requestError:Ale,runSse:_le,runtimeLogs:jle,search:Nle,skills:Rle,sse:Ile,identity:Ple,github:Dle,video:Mle,websiteIntegration:Lle,knowledge:$le,intelligentDevelopment:Fle,migrations:Ble,sandbox:Ule,client:Qle,newChatCapabilities:zle,jsonResponse:Vle,workspaceProjects:Hle,developmentRuns:qle},pUe=Object.freeze(Object.defineProperty({__proto__:null,agentkitCli:Sle,client:Qle,cloudRegion:Ele,common:kle,connections:Cle,default:Wle,developmentRuns:qle,feishuBot:Tle,github:Dle,identity:Ple,intelligentDevelopment:Fle,jsonResponse:Vle,knowledge:$le,migrations:Ble,newChatCapabilities:zle,requestError:Ale,runSse:_le,runtimeLogs:jle,sandbox:Ule,search:Nle,skills:Rle,sse:Ile,video:Mle,websiteIntegration:Lle,workspaceProjects:Hle},Symbol.toStringTag,{value:"Module"})),Kle="Agent reviews",Gle="Request access for everyone in your organization",Xle="Close",Yle="Refresh",Zle="Status",Jle="Applicant",ece="Submitted",tce="Current version",nce="Model",ice="Returned by",rce="Approved by",sce="Reviewed",oce="Agent description",ace="Application notes",lce="Return reason",cce="Review comment",uce="Return reason (required)",dce="Content changed after submission; return and submit again",fce="Withdraw to edit this Agent, then submit a new request to publish it",hce="Other users will lose access to this Agent. Unpublish it?",pce="Cancel",mce="Confirm",gce="Saving",bce="Unpublish",yce="Withdraw request",vce="Approve",xce="Publish for everyone",wce="Request publication",Oce="Everyone",kce={pending:"Pending",approved:"Approved",returned:"Returned",withdrawn:"Withdrawn"},Sce="Search agents or applicants",Ece="Region",Cce="All statuses",Tce="Agent",Ace="Actions",_ce="Review application",jce="Application details",Nce="No matching applications",Rce="No Agent review requests",Ice="{{count}} / {{limit}} characters",mUe={title:Kle,dialogDescription:Gle,close:Xle,refresh:Yle,statusTitle:Zle,submitter:Jle,submittedAt:ece,version:tce,model:nce,returnedBy:ice,approvedBy:rce,reviewedAt:sce,description:oce,message:ace,reason:lce,comment:cce,reasonRequired:uce,contentChanged:dce,withdrawConfirm:fce,unpublishConfirm:hce,cancel:pce,confirm:mce,saving:gce,unpublish:bce,withdraw:yce,return:"Return",approve:vce,publish:xce,submit:wce,private:"Private",enterprise:Oce,status:kce,search:Sce,region:Ece,all:Cce,agent:Tce,actions:Ace,review:_ce,details:jce,noMatches:Nce,empty:Rce,textCount:Ice},gUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Ace,agent:Tce,all:Cce,approve:vce,approvedBy:rce,cancel:pce,close:Xle,comment:cce,confirm:mce,contentChanged:dce,default:mUe,description:oce,details:jce,dialogDescription:Gle,empty:Rce,enterprise:Oce,message:ace,model:nce,noMatches:Nce,publish:xce,reason:lce,reasonRequired:uce,refresh:Yle,region:Ece,returnedBy:ice,review:_ce,reviewedAt:sce,saving:gce,search:Sce,status:kce,statusTitle:Zle,submit:wce,submittedAt:ece,submitter:Jle,textCount:Ice,title:Kle,unpublish:bce,unpublishConfirm:hce,version:tce,withdraw:yce,withdrawConfirm:fce},Symbol.toStringTag,{value:"Module"})),Pce={backToEvaluationCase:"Back to evaluation case",cancel:"Cancel",copied:"Copied",copy:"Copy",exportConversation:"Export conversation",retry:"Retry"},Dce={title:"How would you like to add an Agent?",subtitle:"Choose the approach that best fits your project.",quickCreate:{title:"Create from scratch",description:"Build an Agent with intelligent, custom, template, or workflow modes."},intelligent:{title:"Intelligent mode",description:"Describe your goal, then build, debug, and validate the Agent interactively."},package:{title:"Add and deploy a code package",description:"Upload an Agent project archive, review the code, and deploy it to AgentKit Runtime."},migrate:{title:"Migrate an existing project",description:"Migrate an existing LangChain, Dify, or similar project to AgentKit Runtime."}},Mce={subject:{file:"file changes",command:"command execution"},decision:{accept:"Allowed {{subject}} once",acceptForSession:"Allowed {{subject}} for this session",decline:"Declined {{subject}}",cancel:"Cancelled approval for {{subject}}"},details:{command:"Command",grantRoot:"Authorized path",cwd:"Working directory"}},Lce={noDescription:"No description",region:"Region",unknownAgent:"Unknown Agent"},$ce={agentTransfer:"Agent handoff",annotationHint:"Model response; select text to add an annotation",continueBranch:"Continue with “{{branch}}”",emptyResponse:"This response has no displayable content.",subagentDescription:"Working on a task handed off by the primary Agent."},Fce={title:"Configure {{provider}} credentials",prefix:"Agent Workspace requires {{provider}} credentials. Set",and:"and",suffix:"in the runtime environment, then retry."},Bce={buildRunning:{title:"A build is still running",description:"Leaving will stop this build. The session will remain available in your history.",confirm:"Stop and leave"},deleteThread:{title:"Delete Codex session",description:"Delete “{{name}}” and remove it from your session history?",confirm:"Delete"},returnToCreate:{title:"Return to the create page?",description:"Your current entries will be lost.",confirm:"Return"}},Uce={additionalAgentDeleteFailures:"; {{count}} more failed",agentDeleteFailures:"Failed to delete {{count}} Agents: {{failures}}{{suffix}}",agentToolsMissing:"This Agent is missing required tools: {{tools}}",buildStopUnconfirmed:"You left the development environment, but Studio could not confirm that the build stopped. It may still be running; check its status in session history later.",builtinAgentSendFailed:"Failed to send to the built-in Agent: {{message}}",bytePlusEvaluationUnsupported:"AgentKit evaluation sets are not currently supported on BytePlus",clipboardUnsupported:"This browser does not support writing to the clipboard.",cloudCodexEmptyReply:"The cloud Codex task ended without a response. Send the task again.",cloudCodexSessionMissing:"The cloud Codex session has not appeared in the list yet. Try again shortly.",deploymentRuntimeIdMissing:"Deployment completed without returning a Runtime ID.",environmentExpired:"The selected environment is no longer available. Refresh and select it again.",environmentsLoadFailed:"Failed to load environments",evaluationCaseSessionMissing:"This evaluation case has no session reference and cannot be opened.",evaluationUnsupportedForReply:"This response cannot be added to an evaluation set",firstFrameRequired:"Add a first-frame image before generating from first and last frames.",incompletePromptOptimization:"The prompt optimization result is incomplete. Run the optimization again.",intelligentCapabilityCheckFailed:"Failed to check intelligent development capabilities (HTTP {{status}})",intelligentSessionCreateFailed:"Failed to create the intelligent development session",invalidIntelligentCapability:"The intelligent development capability response is invalid.",localBffToolsNotConfigured:"No tools are configured for the local Studio BFF.",localToolsLoadFailed:"Failed to load local tools",loginPopupBlocked:"The browser blocked the sign-in window. Allow pop-ups and try again.",loginPopupClosed:"The sign-in window was closed. Sign in again to continue.",mediaTooLarge:"{{fileName}} exceeds this platform's media size limit.",mountEnvironmentFailed:"Failed to mount the environment",noConnectedSandbox:"No Sandbox is currently connected.",noCreateAgentPermission:"Your account does not have permission to add Agents.",noManageAgentPermission:"Your account does not have permission to manage Agents.",noOptimizationBaseline:"There is no pre-optimization version available for comparison.",oauthUrlMissing:"The event does not include an authorization URL.",onlyCloudAgentUpdatable:"Only deployed cloud Agents can be updated.",optimizationVersionMissing:"The project version for this optimization could not be found. It may have been deleted.",persistentStorageNotConfigured:"Persistent storage has not been configured by an administrator",readDraftFailed:"Unable to read local drafts. Try again.",runtimeAgentNameMissing:"The Runtime is missing an Agent name and cannot be updated.",runtimeBffToolsDisabled:"BFF tool capabilities are not enabled for this Runtime Agent.",runtimeDeploymentConfigUnavailable:"The Runtime's original deployment configuration cannot be restored, so it cannot be updated safely.",runtimeMissingForConnection:"Runtime information is missing, so the Agent cannot be connected.",runtimeRegionMissingForDelete:"The Runtime is missing region information and cannot be deleted.",runtimeRegionMissingForUpdate:"The Runtime is missing region information and cannot be updated.",runtimeUpdateUnsupported:"This Runtime does not support in-place updates.",sandboxRuntimeUnavailable:"This Agent does not have an available Sandbox Runtime.",sandboxToolsUnavailable:"The current Studio BFF does not provide Sandbox execution tools.",saveDraftLocationRejected:"The browser could not save the current draft location. Check site storage permissions and try again.",saveDraftRejected:"The browser could not save the draft. Try again.",selectSkillToOptimize:"Select a Skill to optimize first.",sessionMissingForMount:"The current session does not exist, so an environment cannot be mounted.",sessionNotReady:"The session is not ready yet.",sessionUnavailable:"The current session is unavailable. Close it and try again.",sourceNotReady:"The source is not ready yet. Return to the conversation to continue.",textVideoRejectsReferences:"Text-to-video does not use reference media. Remove the images or videos first.",videoEditRequiresVideo:"Add the video you want to edit first.",videoExtendRequiresVideo:"Add a source video before extending it.",videoGenerationFailed:"Video generation failed. Try again later.",videoModeUnsupported:"The selected video mode is not supported on this platform.",videoPreviewMissing:"The video task completed, but the server did not return a preview URL.",videoReferenceRequired:"Add at least one reference image or video."},Qce={like:"Like",removeLike:"Remove like",dislike:"Dislike",removeDislike:"Remove dislike",reportIssue:"Report an issue",traceFlameGraph:"Tracing flame graph"},zce={0:"What would you like to work on today?",1:"How can I help?",2:"What would you like me to look into?",3:"Ask me anything",4:"Hi, let's get started",5:"Start a new conversation",6:"What should we tackle first?",7:"Tell me what you have in mind",8:"Where should we begin?",9:"What can I help you with?",10:"Ready to move this forward?",11:"What's most important right now?",12:"Let's get something done today",13:"I'm ready when you are",intelligentDevelopment:"Give your ideas room to grow"},Vce={agentCapabilities:"Checking Agent capabilities…",session:"Loading session…"},Hce={cancelled:"Authorization was cancelled.",pasteCallbackUrl:"After authorization, paste the full callback URL from your browser's address bar:",popupBlocked:"The browser blocked the authorization window. Allow pop-ups and try again.",unsupportedUrl:"The authorization URL is not HTTP or HTTPS and was blocked."},qce={volcengine:"Volcengine"},Wce={checkingPersistence:"Checking persistent storage…",exitDevelopment:"Exit development",fileUploaded:"Uploaded a file to the Sandbox",filesUploaded:"Uploaded {{count}} files to the Sandbox",intelligentDevelopment:"Intelligent development",mode:{readOnly:"Read only",workspaceWrite:"Workspace write",fullAccess:"Full access"},approvalPolicy:{untrusted:"Untrusted commands only",onRequest:"Ask when needed",never:"Never ask"},reviewer:{user:"Ask me",autoReview:"Automatic review"},labels:{approvalPolicy:"Approval policy",file:"File",fileNumber:"File {{number}}",mode:"Sandbox mode",networkAccess:"Network access",reviewer:"Approval method",workingDirectory:"Working directory"},network:{allowed:"Allowed",disabled:"Off"},permissionsUpdated:"Updated Codex permissions for this Sandbox session",persistenceUnknown:"Unable to verify persistent storage",stoppedReady:"Stopped. You can continue typing.",uploadedFilesPrompt:"The following files were uploaded to the current Sandbox workspace. Use them in this task:",workspaceUpdated:"Workspace updated"},Kce={addAgent:"Add Agent",addFromPackage:"Add from code package",agent:"Agent",automations:"Automations",createAgent:"Create Agent",createSkill:"Create Skill",cronJobs:"Cronjob",issueFeedback:"Issue feedback",library:"Library",migrateAgent:"Migrate Agent",newConversation:"New conversation",optimizeSkill:"Optimize {{name}}",search:"Search",skill:"Skill",skillLibrary:"Skill library",systemInfo:"System information",updateAgent:"Update {{name}}",codeProjects:"Code projects",reviewCenter:"Review center"},Gce={title:"Create from workspace",description:"Create and manage code projects, then develop and debug in VS Code"},Xce={actions:Pce,addAgent:Dce,approval:Mce,common:Lce,conversation:$ce,credentials:Fce,dialogs:Bce,errors:Uce,feedback:Qce,greetings:zce,loading:Vce,oauth:Hce,providers:qce,sandbox:Wce,titles:Kce,workspaceProjectEntry:Gce},bUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Pce,addAgent:Dce,approval:Mce,common:Lce,conversation:$ce,credentials:Fce,default:Xce,dialogs:Bce,errors:Uce,feedback:Qce,greetings:zce,loading:Vce,oauth:Hce,providers:qce,sandbox:Wce,titles:Kce,workspaceProjectEntry:Gce},Symbol.toStringTag,{value:"Module"})),Yce="Automations",Zce="Connect development tools and extend your Agents with automated workflows",Jce="Search automations",eue="Automation categories",tue={development:"Development",channels:"Messaging channels"},nue="{{category}} automations",iue="Open {{name}}",rue="Available only in local deployments",sue="No matching automations",oue="Try searching for another name",aue="Back to automations",lue={"coding-agents":{name:"Configure coding agents",badge:"Local",description:"Install built-in VeADK and AgentKit skills globally for Trae, Claude Code, or Codex."},template:{name:"Import starter project",description:"Create a minimal Agent project in your repository with continuous delivery to AgentKit Runtime.",title:"Import starter project",subtitle:"Add a ready-to-run basic Agent and continuous delivery configuration to your repository",panel:"This creates a pull request containing the basic project and AgentKit Runtime delivery workflow.",submitLabel:"Import template and create PR",regionHelp:"Must match the target Runtime region",pullRequest:{title:"feat: import AgentKit basic template",description:"Import a basic Agent project with the AgentKit Studio App Server and add continuous delivery to AgentKit Runtime. Configure the required {{provider}} secrets before merging."},fields:{repository:{label:"GitHub Repo",placeholder:"owner/repository",help:"Enter owner/repository or a full github.com URL"},baseBranch:{label:"Target branch",placeholder:"main",help:"Defaults to main; the pull request will use this branch as its base"},projectPath:{label:"Agent project directory",placeholder:"agentkit-basic-agent",help:"The basic project will be added here; app.py mounts the complete Studio App Server and serves as the entry point"},runtimeName:{label:"Runtime name",placeholder:"support-agent",help:"Used by the AgentKit delivery configuration"},runtimeId:{label:"Runtime ID",placeholder:"rt-xxxxxxxx",help:"The AgentKit Runtime that will receive continuous updates"}}},delivery:{name:"AgentKit Runtime delivery",description:"Add a workflow that continuously delivers your repository to AgentKit Runtime.",title:"AgentKit Runtime delivery",subtitle:"Add continuous delivery to the repository through a pull request",panel:"This creates a release branch and opens a pull request containing the GitHub Actions workflow.",submitLabel:"Confirm and create PR",regionHelp:"Must match the target Runtime region",pullRequest:{title:"feat: continuously publish to AgentKit Runtime",description:"Add a GitHub Actions workflow that continuously publishes updates from the target branch to AgentKit Runtime. Configure the required {{provider}} secrets before merging."},fields:{repository:{label:"GitHub Repo",placeholder:"owner/repository",help:"Enter owner/repository or a full github.com URL"},baseBranch:{label:"Target branch",placeholder:"main",help:"Defaults to main; the pull request will use this branch as its base"},projectPath:{label:"Agent project directory",placeholder:".",help:"Defaults to the repository root; the directory must contain an app.py that mounts the complete Studio App Server"},runtimeName:{label:"Runtime name",placeholder:"support-agent",help:"Used by the AgentKit delivery configuration"},runtimeId:{label:"Runtime ID",placeholder:"rt-xxxxxxxx",help:"The AgentKit Runtime that will receive continuous updates"}}},review:{name:"Automated PR review",description:"Use a GitHub App to review pull requests in an isolated Sandbox.",title:"Automated PR review",subtitle:"Trigger Sandbox reviews through the GitHub App and publish results to pull requests",panel:"Install the GitHub App to target repositories, then enable automated review for each repository.",submitLabel:"Install GitHub App",regionHelp:"",pullRequest:{title:"chore: configure automated PR review",description:"Add a GitHub Actions workflow that reviews same-repository pull requests in an isolated Sandbox and publishes the result as a GitHub review. Configure the required workflow secrets before merging."},fields:{repository:{label:"GitHub Repo",placeholder:"owner/repository",help:"Enter owner/repository or a full github.com URL"},baseBranch:{label:"Target branch",placeholder:"main",help:"Defaults to main; the pull request will use this branch as its base"},sandboxToolId:{label:"Sandbox Tool ID",placeholder:"tool-xxxxxxxx",help:"The AgentKit CodeEnv used for each review"},modelName:{label:"Review model",placeholder:"review-model",help:"The code review model name injected into the Sandbox"},modelBaseUrl:{label:"Model API URL",placeholder:"https://ark.example.com/api/v3",help:"Must be an OpenAI-compatible HTTPS endpoint"}}},"gitlab-review":{name:"GitLab MR review",description:"Use a GitLab integration to review merge requests in an isolated Sandbox."},feishu:{name:"Feishu bot",badge:"Beta",description:"Create a Feishu bot and connect its messages directly to AgentKit Runtime."},"website-integration":{name:"Website integration",description:"Embed an AgentKit Runtime on your website as a floating chat window."}},cue={required:"Required",optional:"Optional",region:"Region",tokenLabel:"GitHub Token",getToken:"Get token",createToken:"Create GitHub token",tokenPlaceholder:"Requires write access to repository contents and pull requests",tokenWorkflowPlaceholder:"Requires write access to contents, pull requests, and workflows",hideToken:"Hide token",showToken:"Show token",tokenHelp:"The token is used only for this submission. It is not stored in the browser or written to the pull request.",tokenWorkflowHelp:"This token is used only to create the configuration PR. It is not a general Sandbox requirement and is not stored in the browser or written to the PR.",prCreated:"PR #{{number}} created",configPrCreated:"Configuration PR #{{number}} created",configPrNextStep:"After it is merged, later pull requests in the same repository will trigger reviews automatically.",viewOnGitHub:"View on GitHub",viewConfigPr:"View configuration PR",secretsHeading:"Before merging the pull request, configure these GitHub Actions secrets in the repository:",secretsConfigHeading:"Before merging the configuration PR, add runtime secrets to the target repository",openSecrets:"Open Secrets settings",secretsPath:"Path: Settings → Secrets and variables → Actions → Repository secrets",repositoryConfigHelp:"A PR review configuration will be added for {{repository}}",repositoryReviewHelp:"GitHub App will validate pull requests for {{repository}}",secretPair:"{{accessKey}}, {{secretKey}} (required)",sessionToken:"{{sessionToken}} (required when using temporary credentials)",requiredSecret:"{{name}} (required)",temporaryCredentialRequired:" (required when using temporary credentials)",requiredSuffix:" (required)",submitting:"Creating PR…",validation:{required:"This field is required",repository:"Enter owner/repository or a full GitHub repository URL",baseBranch:"The target branch format is invalid",projectPath:"Enter a relative path within the repository",runtimeId:"The Runtime ID format is invalid",sandboxToolId:"The Sandbox Tool ID format is invalid",modelName:"The model name format is invalid",modelBaseUrlSafe:"Enter an HTTPS URL without credentials, query parameters, or fragments",modelBaseUrl:"Enter a valid HTTPS URL",runtimeName:{required:"Runtime name is required",characters:"Runtime name can contain only letters, numbers, underscores, and hyphens",length:"Runtime name must be 4–64 characters"}}},uue={title:"Configure coding agents",description:"Install the AgentKit skills bundled with Studio globally for local coding clients.",retry:"Retry",clients:{ariaLabel:"Select coding agents",title:"Local clients",detectAgain:"Detect again",detecting:"Detecting local clients…",detected:"Client detected",available:"Available",unavailable:"Not detected"},skills:{ariaLabel:"Select bundled skills",title:"Bundled skills",viewFiles:"View files",items:{"veadk-agent-development":{name:"VeADK Agent development",description:"Build and refine Agents with VeADK."},"agentkit-cli":{name:"AgentKit CLI",description:"Manage and deploy AgentKit resources with AgentKit CLI."}}},global:{ariaLabel:"Global installation directories",title:"Global installation",description:"Available to other local projects after configuration",empty:"Select a client to see its installation directory."},success:"Configured {{skillCount}} skill(s) for {{agentCount}} client(s)",selection:"{{agentCount}} client(s) and {{skillCount}} skill(s) selected",selectClient:"Select a client first",configuring:"Configuring…",configure:"Configure",errors:{detect:"Failed to detect local clients",configure:"Configuration failed. Check permissions for your user directory and try again."},preview:{description:"Browse the skill files bundled with Studio in read-only mode",close:"Close file preview",loading:"Loading files…",error:"Failed to load skill files",skillFiles:"{{name}} files",files:"Files",fileContent:"File contents",notPreviewable:"This file is not previewable UTF-8 text.",noFiles:"No previewable files."}},due={title:"Feishu bot",description:"Create a Feishu Agent powered by AgentKit Runtime",panel:"Enter the credentials for a published Feishu app. Studio will generate a basic Agent, create a dedicated Runtime, and enable the persistent Feishu messaging connection.",agentName:"Agent name",agentNameHelp:"Used as the root Agent name in the new Runtime",region:"Deployment region",regionHelp:"The Runtime and build artifacts will be created in this region",regions:{"cn-beijing":"Beijing","cn-shanghai":"Shanghai"},appId:"Feishu App ID",appIdHelp:"Application credential from the Feishu Open Platform",appSecret:"Feishu App Secret",appSecretPlaceholder:"Enter the App Secret",appSecretHelp:"Written only to the environment variables of the new Runtime",hideSecret:"Hide App Secret",showSecret:"Show App Secret",hide:"Hide",show:"Show",confirmCancel:"Cancelling will stop the task and clean up any Runtime already created. Continue?",status:{preparing:"Generating the basic Agent",running:"Creating Runtime",cancelling:"Cancelling deployment",succeeded:"Feishu bot Runtime created",cancelled:"Deployment cancelled",failed:"Creation failed"},steps:{prepare:"Generate Agent",build:"Build image",deploy:"Create Runtime",publish:"Publish service"},openConsole:"Open Runtime console",credentials:{title:"Credential handling",description:"The App Secret is used only for this deployment. It is never written to generated source code or browser storage."},cancelDeployment:"Cancel deployment",creating:"Creating…",create:"Create Feishu bot Runtime",validation:{appId:"Enter the Feishu App ID",appSecret:"Enter the Feishu App Secret",agentName:{required:"Name is required",reserved:"user is reserved by Google ADK. Choose another name",characters:"Name must start with a letter or underscore and contain only letters, numbers, and underscores"}},generatedAgent:{description:"A helpful assistant that receives messages through Feishu.",instruction:"You are a helpful assistant serving users through Feishu. Understand each request accurately and provide concise, reliable answers. Ask clarifying questions when information is missing, and never invent facts."}},fue={title:Yce,description:Zce,search:Jce,categoriesLabel:eue,categories:tue,resultsLabel:nue,open:iue,localOnly:rue,emptyTitle:sue,emptyDescription:oue,backToAutomations:aue,cards:lue,github:cue,codingAgents:uue,feishu:due},yUe=Object.freeze(Object.defineProperty({__proto__:null,backToAutomations:aue,cards:lue,categories:tue,categoriesLabel:eue,codingAgents:uue,default:fue,description:Zce,emptyDescription:oue,emptyTitle:sue,feishu:due,github:cue,localOnly:rue,open:iue,resultsLabel:nue,search:Jce,title:Yce},Symbol.toStringTag,{value:"Module"})),hue={"zh-CN":"简体中文","en-US":"English"},vUe={languageNames:hue},xUe=Object.freeze(Object.defineProperty({__proto__:null,default:vUe,languageNames:hue},Symbol.toStringTag,{value:"Module"})),pue={selectedExcerptLabel:"Selected excerpt",commentLabel:"Annotation",commentSeparator:": ",successTitle:"Added to the Bad Case evaluation set",successDescription:"This annotation is linked to the current question and the complete model response.",done:"Done",ariaLabel:"Annotate the selected model response",title:"Add annotation",content:"Annotation",placeholder:"Describe the issue or the expected change",retryError:"{{error}}. Please try again.",cancel:"Cancel",submit:"Add to Bad Case"},mue={attachment:"attachment",image:"image",preview:"Preview {{name}}",uploading:"Uploading",uploadFailed:"Upload failed",remove:"Remove {{name}}",previewDialog:"{{name}} preview",download:"Download",close:"Close",reading:"Loading document…",loadFailed:"Failed to load document: {{error}}"},gue={errorTitle:"Cloud log error",copyError:"Copy complete error details",retry:"Retry",statuses:{live:"Live",connecting:"Connecting",retrying:"Reconnecting",idle:"Disconnected"},title:"Instance logs",description:"The VeFaaS instance handling the current conversation request",close:"Close instance logs",instanceId:"Instance ID",waitingInstance:"Waiting for instance",request:"Request {{id}}",ariaLabel:"Live VeFaaS instance logs",notCapturedTitle:"No instance captured yet",notCapturedDescription:"Send a message to see the instance that handles it and its live logs.",connectingTitle:"Connecting to instance logs",connectingDescription:"Establishing a secure log stream through the Studio BFF.",emptyTitle:"No logs yet",emptyDescription:"Connected to the instance and waiting for new log output.",retention:"Logs refresh automatically. Only the latest {{count}} lines are kept."},bue={title:"Trace",statuses:{loading:"Loading",ready:"",collecting:"Collecting",disabled:"Disabled",forbidden:"Permission required",error:"Failed to load"},errors:{collecting:"The trace is still being collected. Please wait.",disabled:"Tracing is not enabled for this agent. Enable it in the console and try again.",forbidden:"Your account cannot read APMPlus traces. Ask an administrator for read access.",error:"Failed to load the trace. Please try again later."},callCount:"{{count}} calls · {{duration}} ms",close:"Close",loading:"Loading trace…",retryNow:"Retry now",reload:"Reload",empty:"No trace is available for this session yet.",attributes:"Attributes",selectCall:"Select a call on the left to view its details"},yue={exportNote:"This conversation was exported from AgentKit Studio for reference only.",imageFailed:"Failed to generate the image. Please try again.",browserUnsupported:"This browser cannot generate a conversation image. Please try again.",copyUnsupported:"This browser cannot copy images. Download the image instead.",exportFailed:"Export failed. Please try again.",title:"Export conversation",description:"Choose a format and download all inputs and outputs through the current response.",close:"Close",generatingContent:"Preparing export…",retry:"Try again",previewPage:"Previewing page 1 of {{count}}",previewAlt:"Conversation export page 1 of {{count}}",format:"Export format",generatingFormat:"Generating {{format}}…",copying:"Copying…",copiedFirst:"First page copied",copied:"Copied",copyFirst:"Copy first page",copyImage:"Copy image",generating:"Generating…",downloadArchive:"Download PNG archive ({{count}} pages)",downloadFormat:"Download {{format}}"},vue={unsupportedComponent:"Unsupported component: {{component}}",sandboxIdentity:"Codex Sandbox execution identifiers",useSkill:"Use the {{name}} skill",thinkingDone:"Finished thinking",thinking:"Thinking",justNow:"Just now",sourceUnavailable:"The generated source is temporarily unavailable. Please try again later.",downloadStarted:"Download started",verifiedDelivery:"Verified deliverable",generatedSource:"Generated agent source",entryPoint:"Entry point",fileCount:"Files",size:"Size",validationTime:"Validated",generationTime:"Generated",checksPassed:"{{count}} checks passed",sourceReady:"Source is ready to deploy",sourceGuidance:"The source is ready to view, download, or deploy. Confirm the runtime configuration before deployment.",viewSource:"View source",preparing:"Preparing…",viewChanges:"View changes",downloadSource:"Download source",sourceNotReady:"The source is not ready yet",manualDeploy:"Deploy manually to Runtime",deployAgent:"Deploy Agent",beforeOptimization:"Before optimization",afterOptimization:"After optimization",planStatuses:{pending:"Pending",in_progress:"In progress",completed:"Completed",failed:"Incomplete"},renderUi:"Render UI",truncated:"… (truncated)",agentAdjusting:"Agent is adjusting",sandboxDetails:"Detailed Codex Sandbox output",waitingCodex:"Waiting for Codex output",arguments:"Arguments",result:"Result",artifacts:"Artifacts",downloadNamed:"Download {{name}}",powerpoint:"PowerPoint presentation",preview:"Preview",download:"Download",previewDialog:"{{name}} preview",closePreview:"Close preview",slidePreview:"{{name}} slide preview",mcpToolset:"MCP toolset",authorized:"Authorized · {{tool}}",authorizationRequired:"{{tool}} requires authorization",oauthDescription:"The {{tool}} toolset is protected by OAuth and requires sign-in before use.",oauthProvider:"You will be redirected to {{provider}} to sign in.",oauthContinue:"The conversation will continue automatically after authorization.",waitingAuthorization:"Waiting for authorization…",authorize:"Authorize",missingAuthorizationUrl:"No authorization URL was found in the event.",tools:{web_search:{running:"Searching the web",done:"Web search complete"},link_reader:{running:"Reading webpage",done:"Webpage read complete"},run_code:{running:"Running code in the AgentKit sandbox",done:"Code execution completed in the AgentKit sandbox"},list_envs:{running:"Checking available environments",done:"Available environments loaded"},get_env_manifest:{running:"Loading the environment manifest",done:"Environment manifest loaded"},execute_in_sandbox:{running:"Running a command in the environment",done:"Command completed in the environment"},delegate_to_codex_sandbox:{running:"Codex Sandbox is running",done:"Codex Sandbox completed",failed:"Codex Sandbox failed"},image_generate:{running:"Generating image",done:"Image generated"},video_generate:{running:"Generating video",done:"Video generated"},ppt_generate:{running:"Generating presentation",done:"Presentation generated"},load_memory:{running:"Searching long-term memory",done:"Memory search complete"},load_knowledgebase:{running:"Searching the knowledge base",done:"Knowledge base search complete"},load_skill:{running:"Loading skill",done:"Skill loaded"},collect_resources:{running:"Collecting available resources",done:"Resource collection complete",failed:"Resource collection failed"},create_agents:{running:"Creating and running agents",done:"Agent creation complete",failed:"Agent creation failed"}},createAgents:{categories:{skill_hub:"Skill Hub",skill_space:"AgentKit Skill Center",knowledge_base:"Knowledge base",tool:"Tools"},agentTypes:{llm:"LLM Agent",sequential:"Sequential Agent",parallel:"Parallel Agent",loop:"Loop Agent",workflow:"Workflow"},skill:"Skill",subAgents:"Sub-agents",builtinTool:"Built-in tool",skillCenter:"AgentKit Skill Center",selfAuthoredTools:"Custom tools",dependencies:"Dependencies: {{items}}",fullCode:"Complete code for {{name}}",itemCount:"{{label}}: {{count}} items",collectionAria:"Retrieved resource information",retrieving:"Retrieving resources",retrievalFailed:"Resource retrieval did not complete",checkConfig:"Check the resource service configuration and try again.",notSearched:"Not searched",notConfigured:"Not configured",resourceList:"{{label}} resource list",searchKeywords:"Search keywords",skillHubSkipped:"No search keywords were provided, so Skill Hub was not searched.",sourceSkipped:"{{label}} is not configured, so this source was not searched.",noResources:"No resources in this category were returned.",resultAria:"Agent creation results",creationFailed:"Agent creation did not complete",agentResources:"Resources available to {{name}}",knowledgeBase:"Knowledge base",toolsLabel:"Tools",creating:"Creating agents",noAgents:"No agents to display",noAgentResult:"The tool response did not include an agent configuration or execution result.",sourceLabels:{tool:"Tools",knowledge:"AgentKit Knowledge Base",skillCenter:"AgentKit Skill Center",unknown:"Unknown source"},unnamedResource:"Unnamed resource",unnamedAgent:"Unnamed agent"},branchCompare:{ariaLabel:"Compare branches",selectDirection:"Select a direction",continue:"Continue in this direction"},codexProgress:{planTitle:"Codex execution plan",fallback:{fileChange:"Modify files",approval:"Waiting for approval",status:"Codex status",command:"Run command"},planSummary:"{{completed}}/{{total}} completed",command:{running:"Running command",completed:"Command completed",failed:"Command failed"},projectFiles:"{{count}} project files",projectFile:"project files",fileChange:{running:"Updating {{subject}}",completed:"Updated {{subject}}",failed:"Failed to update {{subject}}"},externalTool:"external tool",mcp:{running:"Calling {{tool}}",completed:"Called {{tool}}",failed:"{{tool}} call did not complete"},collaboration:{spawn_agent:{running:"Starting subtask",completed:"Subtask started",failed:"Failed to start subtask"},send_input:{running:"Sending information to subtask",completed:"Information sent to subtask",failed:"Failed to send information to subtask"},wait:{running:"Waiting for subtask",completed:"Subtask wait complete",failed:"Subtask wait failed"},close_agent:{running:"Ending subtask",completed:"Subtask ended",failed:"Failed to end subtask"},default:{running:"Coordinating subtasks",completed:"Subtask collaboration complete",failed:"Subtask collaboration failed"}},webSearch:{running:"Searching the web",completed:"Web search complete",failed:"Web search did not complete"},errorDetail:"Codex execution did not complete.",errorTitle:"Codex encountered an error"}},xue={segments:{system:"System and tools",input:"Input and history",output:"Output and reasoning",remaining:"Remaining"},modelUnavailable:"Model information unavailable",promptWithSystem:"Prompt (including system)",systemUnknown:"System and tool usage unknown",systemApprox:"System and tools approximately {{count}} tokens",ariaKnown:"Context {{percentage}}% used, {{system}}, {{inputLabel}} {{input}} tokens, output and reasoning {{output}} tokens, remaining {{remaining}} tokens",ariaUnknown:"{{model}}, context window unknown, {{count}} cumulative session tokens used",composition:"Context composition",percentageUsed:"{{percentage}}% used",gridAria:"100-cell context composition chart. Each cell represents one percent of the context window.",estimated:"Estimated",unknown:"Unknown",summaryPercentage:"{{used}} used, {{remaining}} remaining",summaryTokens:"{{used}} used, {{remaining}} remaining, {{total}} total",overflow:"Context exceeded by {{count}} tokens",title:"Context usage",unknownModel:"The context window for this model is not available",unknownRuntime:"The current runtime did not provide model information"},wue={title:"Add AgentKit agent",noAgents:"Connected successfully, but no agents were found at this address (/list-apps was empty).",connectionFailed:"Connection failed: {{error}}. Check the URL, API key, and whether the gateway allows cross-origin requests.",description:"Enter the URL and API key of an AgentKit deployment to connect through the ADK protocol. Connected agents will appear in the selector in the upper-left corner.",url:"Endpoint URL",apiKeyHint:"Connect using Authorization: Bearer",displayName:"Display name (optional)",displayNameHint:"Uses the URL hostname by default",cancel:"Cancel",connecting:"Connecting…",connect:"Connect and add"},Oue={placeholder:"Type a message…",inputAria:"Message",generating:"Generating",send:"Send"},kue={ariaLabel:"Invocation context for this turn",removeSkill:"Remove skill {{name}}",removeAgent:"Remove agent {{name}}"},Sue={cardAria:"{{label}} chart",viewAria:"{{label}} display mode",preview:"Preview",code:"Code",invalidEcharts:"The ECharts configuration is not a valid, safe data object. Switch to Code to inspect it.",renderFailed:"The chart cannot be rendered right now. Switch to Code to inspect it.",echartsAria:"ECharts preview",rendering:"Rendering chart…",mermaidFailed:"The chart cannot be rendered right now. Switch to Code to inspect the Mermaid source.",mermaidAria:"Mermaid preview"},Eue={playVideo:"Play video: {{name}}",enlargeImage:"Enlarge image preview: {{name}}",image:"image",enlargeVideo:"Enlarge video",videoPreview:"Video preview",downloadVideo:"Download video",close:"Close"},Cue={annotation:pue,media:mue,runtimeLogs:gue,trace:bue,share:yue,blocks:vue,tokenUsage:xue,addAgentKit:wue,composer:Oue,invocation:kue,visualization:Sue,markdown:Eue},wUe=Object.freeze(Object.defineProperty({__proto__:null,addAgentKit:wue,annotation:pue,blocks:vue,composer:Oue,default:Cue,invocation:kue,markdown:Eue,media:mue,runtimeLogs:gue,share:yue,tokenUsage:xue,trace:bue,visualization:Sue},Symbol.toStringTag,{value:"Module"})),Tue={back:"Back",cancel:"Cancel",deploy:"Deploy",delete:"Delete",loading:"Loading…",next:"Next",notSupported:"Not supported",previous:"Previous",required:"Required",retry:"Retry",actions:"Actions",value:"Value",disabled:"Off",enabled:"Enabled",none:"None",close:"Close",name:"Name",description:"Description",send:"Send"},Aue={heading:"VeADK agent structure configuration",importHint:"Reload this file from Import YAML on the Create Agent page."},_ue={agentName:{required:"Name is required",reserved:"user is reserved by Google ADK. Choose another name.",characters:"Start with a letter or underscore and use only letters, numbers, and underscores"},runtimeName:{required:"Runtime name is required",characters:"Runtime name can contain only letters, numbers, underscores, and hyphens",length:"Runtime name must be 4–64 characters"}},jue={description:"A VeADK-powered assistant that understands user intent and uses the right tools to complete tasks.",instruction:`You are a professional and reliable assistant.
Your goal is to understand the user's request accurately and provide clear, concise, and useful answers.
Guidelines:
- Ask clarifying questions when information is missing. Do not invent facts.
- Use available tools when appropriate and explain key conclusions.
-- Maintain a polite, professional tone.`},Rue={requestFailed:"Request failed ({{status}}){{detail}}",a2aSpaces:{credentialsMissing:"The server does not have cloud provider credentials configured, so AgentKit agent centers are unavailable",loginRequired:"Sign in to access AgentKit agent centers"},vikingKnowledge:{credentialsMissing:"The server does not have cloud provider credentials configured, so VikingDB knowledge bases are unavailable",loginRequired:"Sign in to access VikingDB knowledge bases"},vikingMemory:{credentialsMissing:"The server does not have cloud provider credentials configured, so VikingDB memory stores are unavailable",loginRequired:"Sign in to access VikingDB memory stores"},mcpGateway:{missingHttpTool:"Go back to Add MCP tool and add at least one HTTP MCP service. MCP resilience does not support stdio services.",missingUrl:"An HTTP MCP tool is missing a valid service URL. Go back to Add MCP tool and complete it before publishing."},customModel:{fallbackName:"Custom model",apiKeyLabel:"{{name}} model API Key",fallbackApiKeyLabel:"{{name}} fallback model {{model}} API Key"},deploymentEnv:{serverInjected:"Provided by the server",selectedApiKeyPlaceholder:"Provided by the selected API Key",mcpInjectedComment:"Provided by the added MCP tools",restoredPlaceholder:"Securely restored by the Studio server",generatedMcpPlaceholder:"Generated from the added HTTP MCP tools",restoredHelp:"When updating, the Studio server merges MCP addresses and authentication without returning existing secrets to the browser.",mergedMcpHelp:"The Studio server merges MCP addresses and optional authentication without returning existing secrets to the browser.",listSeparator:", ",requirementHint:"Required by the following optimizations: {{labels}}.",requiredBy:"Required by the following optimizations: {{labels}}. Enter {{key}}.",required:"Enter {{label}} ({{key}}).",invalidJson:"Invalid JSON format"},drafts:{unsupportedVersion:"This local draft version is not supported. Upgrade Studio and try again.",invalidFormat:"The local draft data is invalid.",readFailed:"Could not read local drafts. The browser data may be corrupted.",quotaExceeded:"Browser storage is full, so the draft was not saved. Delete unused drafts or clear this site's storage, then try again.",writeRejected:"The browser blocked saving this draft. Check the site's storage permissions and try again."},skills:{searchFailed:"Search failed ({{status}})",downloadFailed:"Skill download failed ({{status}})",agentKitRequestFailed:"AgentKit Skills request failed",missingManifest:"{{location}} is missing SKILL.md",invalidParentPath:"{{location}} contains an invalid parent path (..): {{path}}",invalidPath:"{{location}} contains an invalid path: {{path}}",localDescription:"Local skill",folderSource:"Folder",noManifest:"No SKILL.md was found in {{location}}"},zip:{invalid:"Invalid zip: EOCD was not found",tooManyFiles:"A zip file cannot contain more than {{count}} files",tooLarge:"The extracted zip content is too large"}},Iue={back:"Back to development session",runtimeName:"Runtime name",runtimeNameExists:"This Runtime name already exists. Choose another name.",checkingRuntimeName:"Checking Runtime name",verifiedSource:"Verified source",deployableSource:"Deployable source",verifiedByCodex:"Verified by Codex in the cloud",entryPoint:"Entry point",files:"Files",artifact:"Artifact",validationReport:"Validation report",verifiedHint:"The server materializes source from the verified artifact. Browser files cannot replace it.",unverifiedHint:"The server securely materialized the source. Confirm the Runtime configuration before deploying.",env:{requiredPlaceholder:"Enter {{key}}",optionalPlaceholder:"Optional: {{key}}"}},Pue={name:"Code package",back:"Back to creation methods",reading:"Reading the code package",readingEllipsis:"Reading the code package…",uploadFirst:"Upload a code package first",uploadAriaLabel:"Code package upload",upload:"Upload code package",reupload:"Upload a different code package",uploadPrompt:"Upload a code package",filesRecognized:"{{count}} files found. Select this area to upload a different package.",dropHint:"Select or drop a .zip file up to 50 MB. Use app.py or declare an entry point in agentkit.yaml.",viewFiles:"View files",chooseFile:"Choose code package",errors:{invalidFormat:"Choose a .zip code package.",tooLarge:"The code package must be 50 MB or smaller.",invalidPath:"The archive contains an invalid path: {{name}}",empty:"The archive does not contain any deployable files.",tooManyFiles:"A code package cannot contain more than {{count}} files.",duplicateFile:"The code package contains a duplicate file: {{path}}",manifestParse:"Could not parse agentkit.yaml: {{detail}}",manifestRoot:"The root of agentkit.yaml must be an object.",manifestCommon:"common in agentkit.yaml must be an object.",entryPointType:"common.entry_point in agentkit.yaml must be a file path.",entryPointInvalid:"common.entry_point in agentkit.yaml is not a valid file path.",entryPointMissing:"The entry point declared in agentkit.yaml is missing from the code package: {{entryPoint}}",defaultEntryPointMissing:"The code package root must contain app.py, or common.entry_point in agentkit.yaml must declare an existing entry point."}},Due={label:"Agent execution canvas",readOnlyLabel:"Read-only agent execution canvas",minimapLabel:"Execution flow minimap",controls:{ariaLabel:"Execution flow controls",zoomIn:"Zoom in",zoomOut:"Zoom out",fitView:"Fit view"},rootAgent:"Main agent",unnamedStep:"Unnamed step",terminals:{input:"User request",output:"Final response"},edges:{then:"Then",continueLoop:"Continue loop",call:"Call"},patterns:{llm:{label:"Agent",description:"Understand a task and complete one specific job"},sequential:{label:"Sequential",description:"Run internal steps one after another"},parallel:{label:"Parallel",description:"Run internal steps together, then combine their results"},loop:{label:"Loop",description:"Repeat internal steps until the stop condition is met"},a2a:{label:"Remote agent",description:"Call an existing remote agent"}},actions:{insertHere:"Insert a step here",deleteNamed:"Delete {{name}}",deleteNode:"Delete node",addSubagent:"Add subagent",addParallelStep:"Add a parallel step",addLoopStep:"Add a loop step",addNextStep:"Add next step",addFirst:"Add at the beginning",addLast:"Add at the end"}},Mue={title:"Intelligent build",subtitle:"Describe what you need. Build, debug, and validate your agent.",model:{label:"Model",placeholder:"Select a model",retiring:"Retiring soon",currentConfiguration:"Current configuration",loadError:"Failed to load models"},availability:{checking:"Checking intelligent development availability…",unavailable:"Intelligent mode is currently unavailable. Go back and try again."},goal:{title:"Start with a goal",continueTitle:"Continue improving the project",hint:"Describe the problem your agent should solve. We will ask about any details that could affect the result.",continueHint:"Describe what you want to change. The result will be saved as a new version.",basedOn:"Based on",clearSelection:"Clear selection",label:"Goal",optimizationLabel:"Optimization goal",placeholder:"For example: Build an agent that reads sales data, creates weekly reports, and validates the output format",optimizationPlaceholder:"For example: Cite data sources and ask the user when information is incomplete"},actions:{preparing:"Preparing…",build:"Start building",optimize:"Start optimizing"},preparation:{accepted:"Goal received. Implementation is starting now.",preparing:"Creating the task environment…",starting:"Environment ready. Starting Codex…",next:"Next, Codex will plan the approach, then build, run, and validate the agent."},tasks:{title:"Tasks in progress",hint:"Work continues when you leave. Return to follow progress or add instructions.",refresh:"Refresh tasks",loading:"Loading tasks…",empty:"No tasks in progress",emptyHint:"Once a build starts, you can return to it here.",loadError:"Unable to load tasks. Please retry.",openError:"Unable to open this task. Please retry.",startedAt:"Started {{time}}",open:"Open task",opening:"Connecting…",states:{queued:"Queued",running:"Building",recovering:"Reconnecting",waiting_user:"Awaiting your reply",stopping:"Stopping",succeeded:"Completed",failed:"Incomplete",cancelled:"Stopped"}}},Lue={title:"Saved projects",description:"Continue improving an existing version, or view, download, and deploy its source.",refresh:"Refresh projects",checkingStorage:"Checking project storage…",unavailableTitle:"Projects are temporarily unavailable",storageCheckError:"Could not confirm project storage status. Try again shortly.",storageNotConfigured:"Project storage is not configured.",loadingMigrated:"Loading migrated projects…",loadingSaved:"Loading saved projects…",loadingVersions:"Loading project versions…",unknownTime:"Unknown time",sourceDownloaded:"Source downloaded.",projectSummary_one:"{{count}} version · Updated {{time}}",projectSummary_other:"{{count}} versions · Updated {{time}}",versionSummary_one:"{{time}} · {{count}} file",versionSummary_other:"{{time}} · {{count}} files",noVersionDescription:"No version description",latestVersion:"Latest version",defaultVersionName:"Version · {{time}}",rename:{projectTitle:"Edit project name",versionTitle:"Edit version name",projectLabel:"Project name",versionLabel:"Version name",hint:"Use letters, numbers and common punctuation, up to {{max}} characters.",required:"Enter a name.",tooLong:"Names can contain up to {{max}} characters.",invalidCharacters:"Names cannot contain line breaks, control or invisible formatting characters, or < >.",save:"Save name",saving:"Saving…",updated:"Name updated.",failed:"Unable to save the name. Try again."},verified:"Verified",pendingVerification:"Needs review",viewSource:"View source",download:"Download",downloading:"Downloading…",optimize:"Optimize",optimizeUnavailable:"Optimize, not supported",errors:{projects:"Could not load saved projects.",source:"Could not load project source.",versions:"Could not load project versions.",download:"Could not download the source.",prepareDeployment:"Could not prepare the source for deployment.",deleteVersion:"Could not delete the project version.",migrated:"Could not load migrated projects",saved:"Could not load saved projects"},empty:{migratedTitle:"No migrated projects yet",savedTitle:"No saved projects yet",migratedDescription:"Source will be saved here after your first migration.",savedDescription:"Source will be saved here after your first build.",noVersions:"This project has no available versions."},compare:{selected:"{{count}}/2 selected",selectedLabel:"Selected",select:"Select",view:"View comparison",start:"Compare versions"},delete:{title:"Delete this version?",onlyVersion:"“{{name}}” has only one version. Deleting it will also remove the project. This cannot be undone.",description:"This version's source and validation records will be permanently deleted. Other versions are not affected.",confirm:"Delete version"}},$ue={title:"Choose how to create",subtitle:"Build your agent with the workflow that fits your needs",features:"Features",quick:{title:"Quick mode",description:"Delegate tasks to dynamically created subagents",features:{dynamicSubagents:"Dynamic subagents",autonomousPlanning:"Autonomous planning",collaboration:"Multi-agent collaboration",summary:"Automatic result summaries",skills:"Skills on demand",trace:"Traceable task execution"}},traditional:{title:"Advanced mode",description:"Customize your agent structure in detail",features:{visualConfig:"Visual configuration",migration:"Existing agent migration",debugging:"Live debugging",optimization:"Optional optimization",parameters:"Fine-grained controls"}}},Fue={placeholder:"Enter a system prompt. Type ## followed by a space to add a level-two heading…",toolbar:{undo:"Undo {{shortcut}}",redo:"Redo {{shortcut}}",paragraph:"Paragraph",quote:"Quote",heading:"Heading {{level}}",selectBlockType:"Select text style",blockType:"Text style",bold:"Bold",removeBold:"Remove bold",italic:"Italic",removeItalic:"Remove italic",bulletedList:"Bulleted list",numberedList:"Numbered list"}},Bue={local:{duplicatesSkipped:"Skipped duplicate skills: {{names}}",invalidDrop:"Drop a folder containing SKILL.md or a .zip file",readError:"Could not read the files: {{detail}}",dropLabel:"Drop a folder or ZIP file to detect skills automatically",hint:"Each skill must contain a SKILL.md file. Directories can contain multiple skills.",reading:"Reading files…",fileCount:"Local · {{count}} files"},hub:{searchError:"Search failed. Try again shortly.",searchPlaceholder:"Search Volcano Find Skill, such as data analysis or PDF",search:"Search",searching:"Searching…",noResults:"No matching skills found. Try another keyword.",hint:"Search Volcano Find Skill by keyword. Selected skills are downloaded to the skills/ directory when the project is generated."},space:{loadError:"Failed to load",loadingSpaces:"Loading AgentKit Skills centers…",noSpaces:"This account has no AgentKit Skills centers.",selectSpace:"Select an AgentKit Skills center",openConsole:"Open in the Volcano Engine console",loadingSkills:"Loading skills…",noSkills:"This AgentKit Skills center has no skills."}},Uue={unnamedNode:"Unnamed node",editInstruction:"Select to edit instructions…",controls:{ariaLabel:"Workflow canvas controls",zoomIn:"Zoom in",zoomOut:"Zoom out",fitView:"Fit view"},sections:{info:"Workflow information",execution:"Execution mode",nodes:"Nodes",nodeConfig:"Node configuration"},types:{sequential:{label:"Sequential",description:"Run nodes one after another"},parallel:{label:"Parallel",description:"Run nodes at the same time"},loop:{label:"Loop",description:"Run nodes repeatedly"}},placeholders:{description:"Describe what this workflow does…",agentDescription:"Describe what this agent does…",instruction:"You are…"},errors:{workflowNameUnique:"The workflow name must be unique among agent node names",agentNameUnique:"Agent names must be unique within this workflow"},dragHint:"Drag onto the canvas, or use the button below",agentNode:"Agent node",addNode:"Add node",connectHint:"Drag between node handles to define the execution order.",create:"Create workflow",deleteNode:"Delete node",nameHelp:"Use only letters, numbers, and underscores. Names must be unique.",instruction:"Instructions",tools:"Tools (comma-separated)",nodeId:"Node ID",empty:{selectNode:"Select a node to edit its configuration",summary:"{{nodes}} nodes · {{edges}} connections"}},Que={ariaLabel:"Quick mode creation",progress:"Quick mode creation progress",steps:{agent:{label:"Agent",title:"Basic information",description:"Set the agent's name, purpose, behavior, and capabilities"},environment:{label:"Environment",title:"Configure the environment",description:"Choose the default environment or a custom environment you have built"},deployment:{label:"Deployment",title:"Deployment preferences",description:"Configure AgentKit cloud settings"}},model:{label:"Model",source:"Model source",name:"Model name",fallbacks:"Fallback models",fallbackPlaceholder:"Fallback model name",addFallback:"Add fallback model",addProviderFallback:"Add other provider",removeFallback:"Remove",fallbackType:"Fallback model type",fallbackSameProvider:"Same provider",fallbackOtherProvider:"Other provider",apiKeyEnv:"API Key environment variable",invalidApiKeyEnv:"Use letters, numbers, and underscores only, and do not start with a number.",fallbackHelp:"Same-provider fallbacks reuse the primary connection. Other providers use separate provider, API base, and API Key settings.",fallbackIgnored:"Empty, duplicate, or primary-model entries will be ignored.",provider:"Provider",invalidApiBase:"Enter a valid http:// or https:// URL.",volcengineArk:"Volcano Ark",custom:"Custom",gateway:"Model gateway",comingSoon:"Coming soon",currentApiKey:"Current API Key",currentConfiguration:"Current configuration",loadingApiKeys:"Loading API Keys",selectApiKey:"Select an API Key",searchApiKeys:"Search API Key names",noApiKeys:"No API Keys available",loadingModels:"Loading models",selectModel:"Select a model",searchModels:"Search by name, Model ID, or provider",noModels:"No models available",apiKeyPlaceholder:"Enter a model API Key",credentialsLoadError:"Failed to load model credentials",modelsLoadError:"Failed to load models"},identity:{unnamedPool:"Unnamed user pool",currentPool:"{{value}} (current user pool)",userPool:"User pool",loading:"Loading user pools",placeholder:"Select a user pool",search:"Search user pools",empty:"This account has no Identity user pools",currentHint:"This Studio's login JWT will be forwarded to the Runtime",mismatchHint:"The selected user pool is not used by this Studio, so the Studio will not be able to call the Runtime after deployment",selectionHint:"The user pool used by this Studio is marked in the list"},agent:{namePlaceholder:"Enter an agent name",descriptionPlaceholder:"Describe what this agent can do",prompt:"Prompt",promptPlaceholder:"Define the role, goals, and behavior boundaries",skills:"Skills",addSkill:"Add skills"},validation:{descriptionRequired:"Enter a description",promptRequired:"Enter a prompt",modelRequired:"Select a model",apiKeyRequired:"Enter or select the model API Key",instanceIntegers:"Minimum instances must be an integer of 0 or greater, and maximum instances must be an integer greater than 0",instanceOrder:"Minimum instances cannot exceed maximum instances",userPoolRequired:"Select a user pool for Runtime authentication"},deployment:{runtimeName:"Runtime name",runtimeNameUpdateHint:"The existing Runtime name is preserved during updates",runtimeNameHint:"Use only letters, numbers, underscores, and hyphens",region:"Deployment region",authentication:"Authentication",apiKeyDescription:"Default: access with the Runtime API Key",userPoolDescription:"Use a JWT issued by an Identity user pool",sessionStorage:"Session storage",inMemoryStorage:"Temporary in-memory storage",backends:{sqlite:"SQLite file",mysql:"MySQL",postgresql:"PostgreSQL"},instances:"Instance settings",minInstances:"Minimum instances",maxInstances:"Maximum instances",inMemoryHint:"To prevent session loss across instances, keep the Runtime at 1–1 instances",networkMode:"Network mode",network:{public:"Public",private:"Private",both:"Public and private"},subnetIds:"Subnet IDs (optional, comma-separated)",sharedInternet:"Shared public egress in the VPC",sharedInternetHint:"Allow private Runtimes to access the public internet through shared egress",evaluationSets:"Evaluation sets",createEvaluationSets:"Create evaluation sets automatically",evaluationSetsHint:"Create Good Case and Bad Case evaluation sets after deployment",resources:"Resource configuration",complete:"Deployment complete",preparing:"Preparing deployment…"},environmentVariables:{title:"Environment variables",add:"Add variable",nameAriaLabel:"Environment variable name",valueAriaLabel:"Value for {{name}}",deleteNamed:"Delete {{name}}"},actions:{updateAgain:"Update again",deployAgain:"Deploy again",updateAndPublish:"Update and publish"}},zue={actions:{addSubagent:"Add subagent",clearRoot:"Clear main agent",clearRootConfirmation:"Clear all settings and subagents from the main agent? This cannot be undone."},workspace:{progress:"Agent creation progress",modes:{build:"Build",validate:"Debug",optimize:"Optimize",environment:"Environment",publish:"Publish"},titles:{build:"Customize your agent architecture",validate:"Debug your agent",optimize:"Choose optimizations for your agent",environment:"Configure the cloud environment",publish:"Prepare your agent for deployment"}},sections:{type:{label:"Agent type",hint:"Choose an agent type"},basic:{label:"Basic information",hint:"Name, description, and system prompt"},model:{label:"Model",hint:"Model and service (optional)"},tools:{label:"Tools",hint:"Callable capabilities"},skills:{label:"Skills",hint:"Declarative skills"},knowledge:{label:"Knowledge base",hint:"External knowledge retrieval"},memory:{label:"Memory",hint:"Short-term and long-term memory"},subagents:{label:"Subagents",hint:"Nested collaboration"},review:{label:"Finish",hint:"Preview and create"}},agentTypes:{ariaLabel:"Agent type",remoteChildOnly:"Remote agents can only be used as child steps",llm:{label:"Agent",fullLabel:"LLM agent",description:"Uses an LLM to complete tasks autonomously"},sequential:{label:"Sequential",fullLabel:"Sequential agent",description:"Runs subagents one after another"},parallel:{label:"Parallel",fullLabel:"Parallel agent",description:"Runs subagents in parallel, then combines their results"},loop:{label:"Loop",fullLabel:"Loop agent",description:"Repeats subagents until the stop condition is met"},a2a:{label:"Remote agent",fullLabel:"Remote agent",description:"Calls a remote agent through the A2A protocol"}},basic:{agentName:"Agent name",name:"Name",agentDescription:"Agent description",descriptionPlaceholder:"Briefly describe what this agent does so your team can identify it…",nameHelp:"Follow Google ADK naming rules and keep the name unique in the execution flow.",rootDescriptionHelp:"The full description is preserved and converted to a Runtime-compatible single line during deployment.",descriptionHelp:"The description appears in agent lists and selectors.",orchestratorHelp:"This is a collaboration container and does not answer directly. Add task steps on the canvas and drag them to reorder.",maxIterations:"Maximum iterations",maxIterationsHelp:"The loop repeats its subagents until the condition is met or this limit is reached.",agentCenter:"AgentKit agent center",agentCenterHelp:"The remote agent's name, description, and capabilities come from the Agent Card returned by the center. The system discovers and attaches matching agents for each task.",moreOptions:"More options",systemPrompt:"System prompt",loadingMarkdown:"Loading Markdown editor…",markdownHelp:"Markdown shortcuts are supported. For example, type ## followed by a space to create a level-two heading.",unnamed:"Unnamed",unnamedAgent:"Unnamed agent"},validation:{remoteRoot:"A remote agent can only be a subagent",missingRegistry:"Select an AgentKit agent center",name:{required:"Name is required",reserved:"user is reserved by Google ADK. Choose another name.",characters:"Start with a letter or underscore and use only letters, numbers, and underscores"},duplicateName:"Agent names must be unique within this structure",missingDescription:"Description is required",mcpDuplicateName:"MCP names must be unique",mcpDuplicateUrl:"Remove the duplicate MCP endpoint before publishing",missingSubagent:"A subagent is required",missingPrompt:"System prompt is required",apiKeyRequired:"Enter or select the model API Key",missingSubagentDetail:"Add at least one subagent to {{type}} before debugging or publishing.",problem:"{{name}}: {{problem}}"},ai:{ariaLabel:"Fill agent configuration with AI",minimumLength:"Enter at least {{count}} characters.",replaceConfirmation:"The generated configuration will replace the current canvas and settings. Continue?",placeholder:"Describe your goal and use {{model}} to generate the configuration",generate:"Generate",generating:"Generating",success:"Configuration generated",regenerate:"Generate again",failed:"Generation failed"},debug:{ariaLabel:"Agent debugging workspace",unavailable:"This backend does not currently support generated-agent debug runs.",baseline:"Baseline",comparison:"Variant {{count}}",selectModel:"Select a model",enterDescription:"Enter a description",enterPrompt:"Enter a system prompt",duplicateConfiguration:"Test configurations must be unique",starting:"Starting…",applyAndRestart:"Apply and restart",restart:"Restart",start:"Start environment",defaultModel:"Default model",testConfiguration:"Test configuration",deleteVariant:"Delete {{name}}",deleteVariantGroup:"Delete comparison variant",creatingEnvironment:"Creating the test environment…",configurationChanged:"The configuration changed. Restart the environment.",ready:"Environment ready",readyHint:"Send a message to compare agent responses.",startHint:"Complete the configuration, then start the environment.",viewTraceNamed:"View the trace for {{name}}",traceUnavailable:"Send a message to view its trace",trace:"Trace",useConfiguration:"Use this configuration",finishConfiguration:"Finish configuration",finishAndStart:"Finish and start",currentAgentModel:"Current agent model",configurationHint:"Changes apply only to this comparison. Select this configuration to continue to deployment.",messagePlaceholder:"Send a message to the running test environments…",startOneFirst:"Start at least one test environment first",addVariant:"Add variant",traceTitle:"Trace · {{name}}",leaveTitle:"Leave debugging?",leaveDescription:"The current environments will be removed when you leave. You can start new environments when you return.",cleaning:"Cleaning up…",confirmLeave:"Leave",closeLeaveConfirmation:"Close leave-debugging confirmation"},optimization:{ariaLabel:"Agent optimization options",scenario:"Optimization scenario",components:"Optimization components",bytePlusUnavailable:"Harness Sidecar optimizations are not available for BytePlus accounts yet. Leave all optimizations unselected to continue; regular BytePlus agents are not affected.",releaseScenario:"Optimization scenario: {{profile}}",profiles:{default:{label:"Custom",description:"Choose components as needed. The Sidecar stays off when none are selected."},ops:{label:"Operations",description:"For operations diagnostics, databases, logs, and monitoring MCP servers."}},groups:{quality:"Improve response quality",cost:"Reduce runtime cost",stability:"Improve runtime stability"},options:{context_engine:{label:"Context management",description:"Manage context assembly, task anchoring, and context budgets."},compressor:{label:"Context and result compression",description:"Compress long context and large tool results to reduce token usage."},verifier:{label:"Response verification and repair",description:"Verify evidence and responses, then repair or alert on failure."},long_run_control:{label:"Goal task control",description:"Manage progress, continuation, and completion conditions for Goal tasks."},mcp_resilience:{label:"MCP resilience",description:"Manage connections, timeouts, empty results, large responses, and call budgets. Includes read-only SQL protection by default."}}},model:{label:"Model",source:"Model source",volcanoArk:"Volcano Ark",volcengineArk:"Volcano Ark",bytePlusModelArk:"BytePlus ModelArk",custom:"Custom",gateway:"Model gateway",comingSoon:"Coming soon",configuration:"Model configuration",name:"Model name",fallbacks:"Fallback models",fallbackPlaceholder:"Fallback model name",addFallback:"Add fallback model",addProviderFallback:"Add other provider",removeFallback:"Remove",fallbackType:"Fallback model type",fallbackSameProvider:"Same provider",fallbackOtherProvider:"Other provider",apiKeyEnv:"API Key environment variable",invalidApiKeyEnv:"Use letters, numbers, and underscores only, and do not start with a number.",fallbackHelp:"Same-provider fallbacks reuse the primary connection. Other providers use separate provider, API base, and API Key settings.",fallbackIgnored:"Empty, duplicate, or primary-model entries will be ignored.",provider:"Provider",invalidApiBase:"Enter a valid http:// or https:// URL.",liteLlmProviders:"LiteLLM providers",apiKeyPlaceholder:"Enter the model API Key",available:"Available",retiring:"Retiring soon",notActivated:"Not activated",unavailable:"Unavailable",apiKeyLoadError:"Failed to load Ark API Keys",loadingApiKeys:"Loading API Keys…",selectApiKey:"Select an API Key",currentApiKey:"Current API Key",apiKeyList:"API Key list",searchApiKey:"Search API Keys",searchApiKeyName:"Search API Key names",noApiKeys:"No API Keys available",noMatchingApiKey:"No matching API Keys",loading:"Loading models…",loaded:"{{count}} models loaded",loadError:"Failed to load models",selectModel:"Select a model",selectProviderModel:"Select a provider model",providerModels:"Provider models",search:"Search models",searchPlaceholder:"Search by name, Model ID, or provider",noMatches:"No matching models",empty:"No models available",unknownStatus:"Unknown status",refresh:"Refresh",refreshing:"Refreshing…",activate:"Activate",activateAction:"Open activation",currentConfiguration:"Current configuration"},tools:{builtIn:"Built-in tools",builtInHelp:"Select VeADK capabilities. Imports and required environment variables are added automatically.",codeExecution:"Code execution configuration",codeExecutionHelp:"Select the AgentKit code execution sandbox.",mcp:"MCP tools"},catalog:{web_search:{label:"Web search",description:"Get real-time information with Volcengine Web Search."},parallel_web_search:{label:"Parallel web search",description:"Run multiple search queries in parallel and combine the results faster."},link_reader:{label:"Link reader",description:"Fetch and read the main content from a URL."},web_scraper:{label:"Web scraper",description:"Crawl webpages into structured data. Requires the Scraper service."},image_generate:{label:"Image generation",description:"Generate images from text with Doubao Seedream."},image_edit:{label:"Image editing",description:"Edit or transform images with Doubao SeedEdit."},video_generate:{label:"Video generation",description:"Generate videos from text or images with Doubao Seedance, including task status queries."},text_to_speech:{label:"Text to speech (TTS)",description:"Convert text to speech with Volcengine Speech."},run_code:{label:"Code execution",description:"Run code in a sandbox."},vesearch:{label:"VeSearch",description:"Search with Volcengine VeSearch. Requires a bot endpoint."},links:{console:"Console",documentation:"Documentation"},env:{modelAgentName:{comment:"Model name"},embeddingModelName:{comment:"Embedding model required by memory and knowledge bases"},vikingMemoryProject:{comment:"VikingDB memory project"},vikingMemoryRegion:{comment:"VikingDB memory region"},vikingMemoryType:{comment:"Memory types"},feishuAppId:{comment:"Feishu app ID"},feishuAppSecret:{comment:"Feishu app secret",placeholder:"Enter the app secret"},registrySpaceId:{comment:"AgentKit agent center",placeholder:"Select an agent center"},registryTopK:{comment:"Number of agents to retrieve"},registryRegion:{comment:"AgentKit agent center region"},registryEndpoint:{comment:"AgentKit agent center OpenAPI endpoint"},agentKitToolId:{comment:"Code execution sandbox ID"},agentKitToolRegion:{comment:"AgentKit Tools region"},openVikingUrl:{comment:"OpenViking service URL"},openVikingMemoryUserId:{comment:"Memory owner ID",help:"The user segment in viking://user//peers//memories. Use it to isolate agents, tenants, or business scenarios. The default is default."},openVikingMemoryPolicy:{comment:"Memory policy",help:"Controls memory extraction and isolation. Leave it blank to use the official default policy."},openVikingKnowledgeUserId:{comment:"Knowledge base owner ID",help:"Used in the default path viking://user//resources// when no resource directory is configured. The default is default."},openVikingTargetUri:{comment:"Knowledge base resource directory",help:"Leave blank to generate it from the KnowledgeBase index. When provided, this OpenViking resource directory takes precedence."},tlsServiceName:{comment:"TLS topic_id. Leave blank to create one automatically"}}},backends:{shortTerm:{local:{label:"In-memory",description:"Stored in the process without persistence. Best for development and debugging."},sqlite:{label:"SQLite file",description:"Persist data to a local .db file."},mysql:{label:"MySQL",description:"Persist data to MySQL."},postgresql:{label:"PostgreSQL",description:"Persist data to PostgreSQL."}},longTerm:{local:{label:"Local vector store",description:"In-process llama-index vector store."},opensearch:{label:"OpenSearch",description:"Vector retrieval with OpenSearch."},redis:{label:"Redis",description:"Vector retrieval with Redis."},viking:{label:"VikingDB Memory",description:"VikingDB memory with user profile support."},openviking:{label:"OpenViking Memory",description:"Long-term memory that stores and retrieves preferences, events, and entities per user."},mem0:{label:"Mem0",description:"Managed memory from Mem0."}},knowledge:{viking:{label:"VikingDB Knowledge",description:"VikingDB knowledge base."},opensearch:{label:"OpenSearch",description:"Vector retrieval with OpenSearch."},context_search:{label:"Context Search",description:"Volcengine Context Search without embedding configuration."},openviking:{label:"OpenViking Knowledge",description:"OpenViking resource-directory knowledge base without embedding configuration."}}},exporters:{apmplus:{label:"APMPlus",description:"Volcengine APMPlus application performance monitoring."},cozeloop:{label:"CozeLoop",description:"Distributed tracing with CozeLoop."},tls:{label:"TLS (Log Service)",description:"Export logs to Volcengine TLS."}},knowledge:{title:"Knowledge base",description:"Enable external knowledge retrieval (RAG) so the agent can answer from your data.",backend:"Knowledge base backend",vikingDatabase:"VikingDB knowledge base"},memory:{shortTerm:"Short-term memory",shortTermDescription:"Store context for one session",shortTermBackend:"Short-term memory backend",longTerm:"Long-term memory",longTermDescription:"Store context across sessions, usually with vector retrieval",longTermBackend:"Long-term memory backend",vikingDatabase:"VikingDB memory",autoSave:"Save sessions to long-term memory automatically",autoSaveDescription:"Write session content to long-term memory when a session ends."},mcp:{removeTool:"Remove MCP tool",namePlaceholder:"Name (optional)",urlPlaceholder:"MCP service URL",pathWarning:"This is a gateway root address. Use it only when the root path is the MCP endpoint; otherwise include the complete service path.",tokenPlaceholder:"Bearer token (optional)",showToken:"Show Bearer token",hideToken:"Hide Bearer token",commandPlaceholder:"Command, such as npx",argsPlaceholder:"Arguments separated by spaces",stdioHint:"The stdio tool starts in the deployment environment. Make sure its command and dependencies are available.",addTool:"Add MCP tool"},resources:{unnamedAgentCenter:"Unnamed agent center",unnamedKnowledgeBase:"Unnamed knowledge base",unnamedMemory:"Unnamed memory store",loadError:"Failed to load",loadingAgentCenters:"Loading agent centers…",agentCentersLoaded:"{{count}} agent centers loaded",noAgentCenters:"No agent centers available",noMatchingAgentCenters:"No matching agent centers",searchAgentKitCenter:"Search AgentKit agent centers",searchNameOrId:"Search by name or ID",selectAgentCenter:"Select an agent center",selectAgentKitCenter:"Select an AgentKit agent center",selectedAgentCenter:"Selected agent center",agentKitCenter:"AgentKit agent center",refreshAgentCenters:"Refresh agent centers",knowledgeBaseList:"Knowledge base list",knowledgeBasePlaceholder:"Select a knowledge base",loadingKnowledgeBases:"Loading knowledge bases…",knowledgeBasesLoaded:"{{count}} knowledge bases loaded",noKnowledgeBases:"No knowledge bases available",noMatchingKnowledgeBases:"No matching knowledge bases",searchKnowledgeBase:"Search knowledge bases",selectKnowledgeBase:"Select a knowledge base",refreshKnowledgeBases:"Refresh knowledge bases",memoryList:"Memory store list",memoryPlaceholder:"Select a memory store",loadingMemories:"Loading memory stores…",memoriesLoaded:"{{count}} memory stores loaded",noMemories:"No memory stores available",noMatchingMemories:"No matching memory stores",searchMemory:"Search memory stores",selectMemory:"Select a memory store",refreshMemories:"Refresh memory stores"},env:{noAdditionalParameters:"This backend needs no additional runtime parameters.",invalidJson:"Enter valid JSON.",helpAriaLabel:"Help for {{label}}: {{help}}",openOpenViking:"Open OpenViking {{label}}",valuePlaceholder:"Enter a value",openVikingIndex:"OpenViking resource index",openVikingIndexHelp:"Leave blank to generate an index from the agent name, such as my_agent_kb. Without DATABASE_OPENVIKING_TARGET_URI, the default URI is viking://user/{knowledge base owner ID, or default}/resources/{resource index}/. When DATABASE_OPENVIKING_TARGET_URI is set, that complete URI is used instead.",openVikingIndexAriaLabel:"OpenViking resource index help: {{help}}"},deployment:{vpcRequired:"Enter a VPC ID when using VPC networking.",apiKeyRequired:"Select the API Key used by the model.",invalidEnvName:"Invalid environment variable name: {{key}}",requiredEnv:"{{name}}: enter this required environment variable",generatingConfiguration:"Generating deployment configuration",runtimeNameExists:"This Runtime name already exists. Choose another name and try again.",preparing:"Preparing deployment",complete:"Deployment complete",failed:"Deployment failed",updateAndPublish:"Update and publish",stages:{build:"Build image",deploy:"Deploy Runtime",publish:"Publish service",running:"Deploying"}},publish:{generating:"Generating publish configuration",validating:"Validating the agent structure and preparing the deployment snapshot…"}},Vue={presets:{support:{name:"Customer support assistant",description:"Answer questions around the clock using your knowledge base and conversation history, with consistent and considerate responses.",instruction:"You are a professional and patient customer support assistant. Always use a courteous, friendly tone. Base answers on the knowledge base whenever possible. When the available information is insufficient, say so clearly and ask for the details you need instead of inventing an answer. Keep responses concise and well structured, and provide steps when useful.",subagents:{}},analyst:{name:"Data analyst",description:"Run code for statistics and visualization with tracing enabled, so every analysis is observable and reproducible.",instruction:"You are a rigorous data analyst. Clarify the objective and definitions before cleaning, analyzing, and visualizing data with executable code. Explain assumptions and methods at each step, support conclusions with key evidence, and identify possible bias or limitations.",subagents:{}},translator:{name:"Translation assistant",description:"Translate between Chinese and English accurately and naturally while preserving tone and terminology.",instruction:"You are a professional translator fluent in Chinese and English. Preserve the meaning of the source while producing natural language for the target audience. Keep proper nouns and technical terminology accurate and reflect the original tone and style. Return only the translation unless the user asks for an explanation.",subagents:{}},coder:{name:"Coding assistant",description:"Write, debug, and refactor code, validate it by running tests, and produce clear, maintainable implementations.",instruction:"You are a senior software engineer. Write correct, clear, maintainable code that follows the conventions and best practices of the target language. When uncertain, run the code to validate the implementation, cover important edge cases, and add concise comments for complex logic.",subagents:{}},researcher:{name:"Researcher",description:"Search primary sources online and combine them with knowledge and long-term memory to produce evidence-backed findings.",instruction:"You are a rigorous researcher. Break each question into key subproblems, collect multiple credible primary sources through web search, and cross-check the evidence before drawing conclusions. Cite sources, state uncertainty, distinguish facts from inference, and avoid overgeneralization.",subagents:{}},"research-team":{name:"Multi-agent research team",description:"Coordinate a researcher, analyst, and writer to produce an end-to-end research report.",instruction:"You coordinate a research team. Break down the user's research task, delegate search, analysis, and writing to the appropriate subagents, synthesize their work, and deliver a clear, evidence-backed report.",subagents:{0:{name:"Researcher",description:"Collect primary sources and data related to the topic online.",instruction:"You are the team's researcher. Find multiple credible sources about the topic, organize the key facts, data, and original citations, and hand them to the analyst without adding unsupported conclusions."},1:{name:"Analyst",description:"Cross-check and synthesize the collected material.",instruction:"You are the team's analyst. Cross-check, compare, and synthesize the research material. Extract insights, identify contradictions and uncertainty, and produce a structured set of findings."},2:{name:"Writer",description:"Turn the analysis into a clear report with reliable citations.",instruction:"You are the team's writer. Turn the analyst's findings into a clear, well-written report with consistent citations, ensuring every conclusion can be traced to a source."}}}},tags:{tools:"Tools",memory:"Memory",knowledgeBase:"Knowledge base",tracing:"Tracing",subagents:"{{count}} subagents"},gallery:{title:"Create from a template",subtitle:"Choose a prebuilt agent template and customize it to fit your needs."},detail:{back:"Back to templates",name:"Name",systemPrompt:"System prompt",model:"Model",tools:"Tools",memory:"Memory",knowledgeBase:"Knowledge base",tracing:"Tracing",subagents:"Subagents ({{count}})",create:"Create from this template",shortTermMemory:"Short-term",longTermMemory:"Long-term"}},Hue={checkingExpiry:"Checking expiry",waitingRecovery:"Waiting for recovery",listFailed:"Could not load projects",recoveryFailed:"Could not restore the workspace. Try again",operationFailed:"Project operation failed. Try again",title:"Code projects",back:"Back to code projects",restart:"This development environment will restart in {{countdown}}. Save your work regularly",expiresAt:"Expires at {{date}}",exitFullscreen:"Exit full screen",fullscreen:"Full screen",exitFullscreenHint:"Exit full screen (Esc)",recovering:"Restoring your workspace. Your project will reopen automatically",retry:"Retry connection",search:"Search code projects",newTitle:"New code project",new:"New project",readingStats:"Loading project details",createdAt:"Created",opening:"Opening",unknownCreatedAt:"Creation time unknown",open:"Open project",empty:"No matching code projects",close:"Close new project",name:"Project name",placeholder:"e.g. my-agent",nameHelp:"Start with a letter and use letters, numbers, underscores or hyphens, up to 64 characters",cancel:"Cancel",create:"Create project",files_one:"{{count}} file",files_other:"{{count}} files",directories_one:"{{count}} directory",directories_other:"{{count}} directories",separator:", "},que={enabled:"Enabled",disabled:"Disabled",unknownStatus:"Unknown status",allPermissions:"All permissions",customPermissions:"Custom permissions",unknownPermissions:"Unknown permissions",unnamed:"Unnamed API Key",search:"Search name, status or permissions",noMatches:"No matching API Keys",noModelPermission:"Not permitted by this API Key",modelAvailable:"Available",permissionState:{Available:"Available for chat",Shutdown:"Shut down",VideoGeneration:"Video generation model",Unsupported:"Not a chat model",NotActivated:"Not activated",Unknown:"Model status unavailable"}},Wue={common:Aue,yaml:_ue,validation:jue,defaults:Nue,helpers:Rue,intelligentDeployment:Iue,codePackage:Pue,buildCanvas:Due,intelligent:Mue,projectLibrary:Lue,modePicker:$ue,promptEditor:Fue,skills:Bue,workflow:Uue,workbench:Que,traditional:zue,template:Vue,workspace:Hue,modelApiKey:que},kUe=Object.freeze(Object.defineProperty({__proto__:null,buildCanvas:Due,codePackage:Pue,common:Aue,default:Wue,defaults:Nue,helpers:Rue,intelligent:Mue,intelligentDeployment:Iue,modePicker:$ue,modelApiKey:que,projectLibrary:Lue,promptEditor:Fue,skills:Bue,template:Vue,traditional:zue,validation:jue,workbench:Que,workflow:Uue,workspace:Hue,yaml:_ue},Symbol.toStringTag,{value:"Module"})),Kue={backToList:"Back to scheduled tasks",cancel:"Cancel",cancelQueue:"Cancel queued run",cancelQueueFirst:"Cancel the queued run first",cancelling:"Cancelling…",closeDrawer:"Close panel",collapse:"Collapse",connectingRuntime:"Connecting to Runtime…",createScheduledTask:"Create scheduled task",createTask:"Create task",delete:"Delete",deleteTask:"Delete task",edit:"Edit",enable:"Enable",expand:"Expand",pause:"Pause",refresh:"Refresh",refreshHistory:"Refresh run history",rerun:"Run again",retry:"Retry",runNow:"Run now",saveChanges:"Save changes",saving:"Saving…",stop:"Stop run",stopRun:"Stop this run",stopRunFirst:"Stop the current run first",stopping:"Stopping…",viewDetails:"View details"},Gue={cancelDescription:"This Session will be cancelled. Future scheduled runs will remain enabled.",cancelTitle:"Stop this run?",deleteDescription:"“{{name}}” and its complete run history will be permanently deleted.",deleteTitle:"Delete scheduled task?"},Xue={configuration:"Task configuration",nextRun:"Next run",pageLabel:"Scheduled task details",region:"Region",runtime:"Runtime",status:"Task status"},Yue={createTitle:"Create scheduled task",description:"Each trigger creates a separate Session for the Runtime Agent.",editTitle:"Edit scheduled task"},Zue={minutesSeconds:"{{minutes}} min {{seconds}} sec",seconds:"{{count}} sec"},Jue={cronExpression:"Cron expression",cronHelp:"Enter minute, hour, day of month, month, and day of week.",dailyTime:"Daily run time",enableAfterCreate:"Enable after creation",enableHelp:"The task will run at its next scheduled time after it is enabled.",name:"Task name",namePlaceholder:"For example: Generate a daily operations summary",noRuntime:"No Runtime available",prompt:"Execution prompt",promptPlaceholder:"Enter the text to send to the Agent on every run",runAt:"Run time",runtimeAgent:"Runtime Agent",runtimeHelp:"The task always uses the Runtime's currently active version.",runtimePlaceholder:"Select a Runtime Agent",schedule:"Schedule",scheduleType:"Schedule type",timezone:"Time zone",weekday:"Day of week"},ede={all:"All"},tde={description:"Each run uses a separate Session. Results and errors are retained.",duration:"Duration: {{duration}}",emptyDescription:"Runs will appear here after the task is triggered or run manually.",emptyTitle:"No runs yet",errorDetails:"Error details",finalAnswer:"Final answer",loadFailed:"Unable to load run history",loadFailedDescription:"Check the Studio service and try again.",session:"Session",title:"Run history"},nde={cancelRequested:"Stop request submitted.",created:"Task created.",deleted:"The task and its run history were deleted.",enabled:"Task enabled.",paused:"Task paused.",queued:"Task queued and will start within one minute.",requeued:"Task queued again and will start within one minute.",updated:"Task updated."},ide={filterLabel:"Filter scheduled tasks by status",listLabel:"Scheduled task list",loadFailed:"Unable to load scheduled tasks",loadFailedDescription:"Check the Studio service and try again.",title:"Cronjob"},rde={cron:"Cron {{cron}}{{zone}}",daily:"Daily at {{time}}{{zone}}",once:"Once · {{date}}{{zone}}",weekly:"{{weekday}} at {{time}}{{zone}}"},sde={daily:"Daily",once:"Once",weekly:"Weekly"},ode={cancelled:"Cancelled",enabled:"Enabled",failed:"Failed",notRun:"Not run yet",paused:"Paused",pending:"Preparing",queued:"Queued",retrying:"Retrying",running:"Running",skipped:"Skipped",success:"Succeeded"},ade={cronFields:"A Cron expression must contain five fields, for example 0 9 * * *.",nameRequired:"Enter a task name.",promptRequired:"Enter the text to send to the Agent on each run.",runtimeAppMissing:"The Runtime Agent did not return an appName. Confirm that the Runtime is ready and compatible.",runtimeRequired:"Select an available Runtime Agent.",timeRequired:"Select a run time."},lde={friday:"Friday",monday:"Monday",saturday:"Saturday",sunday:"Sunday",thursday:"Thursday",tuesday:"Tuesday",wednesday:"Wednesday"},SUe={actions:Kue,confirm:Gue,detail:Xue,drawer:Yue,duration:Zue,fields:Jue,filters:ede,history:tde,notices:nde,page:ide,schedule:rde,scheduleTypes:sde,status:ode,validation:ade,weekdays:lde},EUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Kue,confirm:Gue,default:SUe,detail:Xue,drawer:Yue,duration:Zue,fields:Jue,filters:ede,history:tde,notices:nde,page:ide,schedule:rde,scheduleTypes:sde,status:ode,validation:ade,weekdays:lde},Symbol.toStringTag,{value:"Module"})),cde="Quick-create Agent",ude="Agent type",dde="Close",fde="Deploy",hde="Preview",pde="Configuration download started",mde="Download failed — try again",gde="Review {{count}} configuration issues",bde="Custom",yde="Custom {{field}}",vde="Enter a custom value",xde="This model declares no reasoning levels; the service settings apply",wde="Add a model to this provider first",Ode="Select a provider first",kde="Select an option",Sde="Optional",Ede="Default model, Agent preset and permissions apply to new sessions. The preset must exist in the deployed Harness",Cde="Enter an environment variable name only; supply its secret value at deployment",Tde="read-only allows reading; workspace-write allows workspace edits; danger-full-access allows full access without approval",Ade="allowedModels lists the models sub-agents may select. Enabling selection requires at least one provider/model pair",_de="Add a custom model service using its endpoint, protocol and model IDs, including compatible Volcengine and BytePlus services",jde="Covers common native settings. Other plugin parameters and preset files are not included yet",Nde="Native configuration reference",Rde="Provider {{index}}",Ide="Model {{index}}",Pde="Add provider",Dde="Remove provider {{index}}",Mde="Add model",Lde="Remove model {{index}}",$de="Add allowed model",Fde="Remove allowed model {{index}}",Bde="Remove",Ude="Enter the service’s model ID",Qde={provider:"Provider {{index}}",model:"Model {{index}}"},zde={defaults:"Session defaults",deepseek:"DeepSeek model service",providers:"Custom model providers",shell:"Command execution",loop:"Tool calls",subagents:"Sub-agent model selection",search:"DeepSeek web search"},Vde={id:"Provider ID",displayName:"Display name",baseURL:"Base URL",api:"API protocol",apiKeyEnv:"API key environment variable"},Hde={id:"e.g. company-models",displayName:"Optional; defaults to the provider ID",baseURL:"https://…/v1",api:"Select a protocol",apiKeyEnv:"e.g. MODEL_API_KEY"},qde={id:"Model ID",name:"Display name",contextWindow:"Context capacity",maxTokens:"Maximum output capacity"},Wde={positive:"Enter a number greater than zero",integer:"Enter a valid positive integer",env:"Use letters, digits and underscores; do not start with a digit",url:"Enter an HTTP or HTTPS URL without credentials",option:"Select a supported native option",required:"Complete this field",duplicate:"This ID or model pair already exists",providerId:"Start with a lowercase letter; use lowercase letters, digits, dots, underscores or hyphens; reserved IDs are unavailable",routes:"Add at least one complete provider/model pair",modelPair:"Enter a model ID for this custom provider",unknownProvider:"Add this custom provider first",unknownModel:"Enter a model ID configured for this provider",timer:"Enter a timeout greater than 0 and no more than 2147483647 ms"},Kde={"agent-default-model_provider":"Default provider","agent-default-model_model":"Default model","agent-default-model_reasoningEffort":"Default reasoning effort","agent-presets_default":"Default Agent preset",permission_defaultPreset:"Default permission preset","llm-deepseek_apiKeyEnv":"API key environment variable","llm-deepseek_baseURL":"Base URL","llm-deepseek_thinking":"Thinking mode","llm-deepseek_reasoningEffort":"Reasoning effort","llm-deepseek_maxTokens":"Output limit per request","llm-deepseek_defaultContextWindow":"Default context capacity","llm-deepseek_streamIdleTimeoutMs":"Stream idle timeout (ms)",bash_timeoutMs:"Default execution timeout (ms)",bash_maxTimeoutMs:"Maximum execution timeout (ms)",bash_maxOutputBytes:"Output limit (bytes)","agent-loop_maxParallelToolCalls":"Parallel tool-call limit","subagent-model-selection_enabled":"Enable model selection","web-search-deepseek_apiKeyEnv":"API key environment variable","web-search-deepseek_baseURL":"Search base URL","web-search-deepseek_model":"Search model","web-search-deepseek_apiVersion":"API version","web-search-deepseek_maxTokens":"Search output limit","web-search-deepseek_maxUses":"Maximum search uses"},Gde="Cancel",Xde="Back to creation methods",Yde="DeepSeek Harness configuration",CUe={title:cde,agentType:ude,close:dde,continue:"Continue",deploy:fde,preview:hde,export:"Export configuration",downloaded:pde,downloadFailed:mde,validationSummary:gde,customValue:bde,customField:yde,enterCustomValue:vde,reasoningUnavailable:xde,modelsUnavailable:wde,selectProviderFirst:Ode,selectOption:kde,optional:Sde,defaultsHelp:Ede,credentialHelp:Cde,permissionHelp:Tde,routesHelp:Ade,providersHelp:_de,coverage:jde,source:Nde,provider:Rde,model:Ide,addProvider:Pde,removeProvider:Dde,addModel:Mde,removeModel:Lde,addRoute:$de,removeRoute:Fde,remove:Bde,modelIdPlaceholder:Ude,route:Qde,sections:zde,providerFields:Vde,providerPlaceholders:Hde,modelFields:qde,errors:Wde,fields:Kde,cancel:Gde,back:Xde,pageTitle:Yde},TUe=Object.freeze(Object.defineProperty({__proto__:null,addModel:Mde,addProvider:Pde,addRoute:$de,agentType:ude,back:Xde,cancel:Gde,close:dde,coverage:jde,credentialHelp:Cde,customField:yde,customValue:bde,default:CUe,defaultsHelp:Ede,deploy:fde,downloadFailed:mde,downloaded:pde,enterCustomValue:vde,errors:Wde,fields:Kde,model:Ide,modelFields:qde,modelIdPlaceholder:Ude,modelsUnavailable:wde,optional:Sde,pageTitle:Yde,permissionHelp:Tde,preview:hde,provider:Rde,providerFields:Vde,providerPlaceholders:Hde,providersHelp:_de,reasoningUnavailable:xde,remove:Bde,removeModel:Lde,removeProvider:Dde,removeRoute:Fde,route:Qde,routesHelp:Ade,sections:zde,selectOption:kde,selectProviderFirst:Ode,source:Nde,title:cde,validationSummary:gde},Symbol.toStringTag,{value:"Module"})),Zde="Report an issue",Jde="Description",efe="Common issues",tfe="Cancel",nfe="Done",ife="Submit feedback",rfe="Submitting…",sfe={title:"Feedback submitted. Thank you.",description:"The AgentKit team will review your report as soon as possible."},ofe={close:"Close issue report",intro:"Select the issues you encountered and add any useful details.",privacy:"Your conversation data will be shared with the AgentKit team. Please protect sensitive information.",descriptionPlaceholder:"Describe what happened (optional)",issues:{slow:"Slow execution",crash:"Runtime crash",incorrect:"Inaccurate result",tool_error:"Tool call failed",other:"Other issue"}},afe={description:"Tell us about a problem you encountered while using AgentKit Studio.",module:"Area",modules:{conversation:"Conversation",agents:"Agents",applications:"Automations",search:"Search",other:"Other"},commonIssuesMultiple:"Common issues (select all that apply)",issueTypes:"Issue types",issues:{page_slow:"Page loads slowly",feature_unavailable:"Feature unavailable",display_error:"Display issue",no_response:"Action has no response",other:"Other issue"},descriptionPlaceholder:"Describe the page, action, and what happened",quickAdd:"Quick add",suggestionsLabel:"Suggested descriptions",suggestions:{noResponse:"Nothing happens after I click",loading:"The page remains in a loading state",incomplete:"Some content is missing or clipped",error:"An error appears after the action"},privacy:"Your data will be shared with the AgentKit team. Please protect sensitive information."},AUe={title:Zde,descriptionLabel:Jde,commonIssues:efe,cancel:tfe,done:nfe,submit:ife,submitting:rfe,success:sfe,dialog:ofe,page:afe},_Ue=Object.freeze(Object.defineProperty({__proto__:null,cancel:tfe,commonIssues:efe,default:AUe,descriptionLabel:Jde,dialog:ofe,done:nfe,page:afe,submit:ife,submitting:rfe,success:sfe,title:Zde},Symbol.toStringTag,{value:"Module"})),lfe={back:"Back",close:"Close"},cfe={title:"Optimize migrated project",closeAria:"Close optimization dialog"},ufe={title:"Migrated projects",description:"Manage migrated source versions or continue optimizing any version.",libraryTitle:"Projects and versions",libraryDescription:"View, download, deploy, or compare source versions, or continue optimizing any version.",emptyTitle:"No migrated projects yet",emptyDescription:"Migrated source code will be saved here automatically."},dfe={langchain:"LangChain",langgraph:"LangGraph",adk:"Google ADK",strands:"Strands",agentcore:"AgentCore",dify:"Dify",any:"Any (universal migration)"},ffe={awaitingUpload:"Awaiting upload",analyzing:"Analyzing",needsInput:"Needs input",analysisReady:"Awaiting confirmation",migrating:"Migrating",validating:"Validating",packaging:"Packaging",succeeded:"Completed",succeededWithWarnings:"Completed with notices",partial:"Partially completed",failed:"Failed",cancelled:"Stopped",expired:"Expired"},hfe={evaluationPending:"Evaluation pending",evaluationRunning:"Evaluating",waitingDataset:"Evaluation cases pending",waitingEnvironment:"Environment variables required",evaluationFailed:"Migrated, evaluation incomplete",evaluationBlocked:"Migrated, evaluation needs attention",evaluationCancelled:"Migrated, evaluation cancelled",resultUnavailable:"Result unavailable",environmentExpired:"Environment expired"},pfe={partialReady:"Migration output is ready, but delivery is incomplete. Review the migration notices.",readyWithWarnings:"Migration output is ready. Review the migration notices.",ready:"Migration output is ready."},mfe={passed:"Output verification passed",failed:"Output verification failed",degraded:"Output verification incomplete"},gfe={session:"Create migration environment",upload:"Upload project",analysis:"Analyze project"},bfe={agentNameRequired:"Enter an Agent name",agentNameInvalid:"Agent names must be 1–63 characters, contain only lowercase letters, numbers, and hyphens, and start and end with a letter or number"},yfe={seconds:"{{seconds}} sec",minutesSeconds:"{{minutes}} min {{seconds}} sec"},vfe={savedUnaffected:"Saved projects are unaffected",savingUnaffected:"Source is being saved and will be unaffected once complete",activeDetail:"Task history and temporary output will become unavailable after expiration",oneHour:"Temporary migration environment is retained for 1 hour",ended:"Temporary migration environment has ended",savedAvailable:"Saved projects remain available to view, download, deploy, or optimize",unavailable:"Task history and temporary output are no longer available",countdown:"Temporary migration environment ends in {{minutes}} min {{seconds}} sec",expiredSavedMessage:"The temporary migration environment has ended. Saved projects are unaffected.",expiredMessage:"The temporary migration environment has ended. Task history and temporary output are no longer available."},xfe={recommended:"Recommended migration method",scope:"Migration scope",excluded:"Out of scope",viewEvidence:"View analysis evidence",viewAssumptions:"View key assumptions",viewSourceEvidence:"View source evidence"},wfe={ariaLabel:"Codex activity",title:"Codex activity",startingAnalysis:"Codex is starting the analysis…",startingMigration:"Codex is starting the migration…",loadError:"Codex activity is temporarily unavailable. The current task is unaffected."},Ofe={title:"Migration output",fileTooLarge:"This file exceeds 2 MiB. Download the complete output to view it.",unsupportedPreview:"This file cannot be previewed here. Download the complete output to view it.",filesAria:"Migration output files",searchAria:"Search output files",searchPlaceholder:"Search files",limit:"Showing the first {{count}} items. Search for a specific file.",noSelection:"No file selected",noPreview:"No files available to preview.",loadingFile:"Loading output file…",startupFile:"Startup file",fileCountLabel:"Files",saved:"Source has been saved. You can view, download, deploy, or optimize it.",saving:"Output is ready and the source version is being saved.",deployReady:"Output is available to preview, download, and deploy. Waiting for source save status.",deployUnavailable:"Output is available to preview and download, but its current delivery status does not support deployment.",viewProjects:"View migrated projects",downloading:"Downloading…",downloadZip:"Download ZIP",deployTitle:"Deploy migration output",deployUnavailableTitle:"Current delivery status does not support deployment",deployRuntime:"Deploy to Runtime",fileCount:"{{count}} files",startup:"Startup file {{module}}",loading:"Loading migration output…"},kfe={retiring:"Retiring soon",currentDefault:"Current default model",loadError:"Failed to load models",label:"Model",placeholder:"Select a model"},Sfe={zipOnly:"Select a local project in .zip format.",invalidName:"The ZIP file name is invalid. Rename the file and select it again.",tooLarge:"The project ZIP cannot exceed {{size}}.",empty:"The project ZIP cannot be empty.",removeAria:"Remove project ZIP",reselectPrompt:"Select the project ZIP again",selectPrompt:"Select or drop a local project ZIP",reselect:"Select again",selectZip:"Select ZIP",continue:"Continue upload",start:"Upload and analyze",inputAria:"Select a local project ZIP",retention:"The temporary migration environment is retained for 1 hour after creation. Successfully saved source versions are unaffected.",uploading:"Uploading…",sizeHint:"Project ZIP, up to {{size}}"},Efe={requiredPlaceholder:"Enter {{key}}",optionalPlaceholder:"Optional: {{key}}",notReady:"Migration output is not ready yet.",back:"Back to migration results"},Cfe={backToAddAgent:"Back to Add Agent",title:"Migrate existing project",newMigration:"New migration",recent:"Recent migrations",loadingSessions:"Loading migration sessions…",noSessions:"No migration sessions",heading:"Migrate an existing Agent project",intro:"Upload a local project ZIP. Codex will first perform a read-only analysis, then ask you to confirm the migration method.",backToHome:"Migration home",navigation:"Migration navigation",showMore:"Show more",showLess:"Show less",projectName:"Project name",status:"Status",createdAt:"Created",actions:"Actions",openTask:"Open migration {{name}}",continueTask:"Continue",viewTask:"View"},Tfe={stop:"Stop migration",stopping:"Stopping…",cancel:"Cancel",reload:"Reload",refreshStatus:"Refresh status"},Afe={unavailable:"Migration is currently unavailable",defaultReason:"Dev Sandbox is currently unavailable. Contact your administrator to check the configuration."},_fe={creatingSandbox:"Creating Dev Sandbox",initializing:"Initializing the migration workspace and checking AgentKit CLI, Codex, and migration capabilities. The project will upload automatically when the environment is ready.",elapsed:"Elapsed: {{duration}}",uploadThenAnalyze:"Read-only analysis will start automatically after the ZIP upload completes.",analyzing:"Codex is identifying the framework, entry point, and migration boundaries. No migration changes are being made.",migrationLocked:"Attachments and migration settings cannot be changed while migration is running. Wait for the task to finish or stop it.",analysisPaused:"Read-only analysis is paused. Answer only the questions below. After submission, analysis will continue in the same environment without starting the migration.",analysisComplete:"Read-only analysis is complete. Review the recommendation and confirm the final migration method.",awaitingUpload:"The migration environment is ready. Select the local ZIP again to continue uploading.",expiredTitle:"Migration environment expired",expiredDescription:"Migration content and output can no longer be previewed, downloaded, or deployed. If the Runtime deployment completed, return to the Agents page to continue using it.",unsupportedTitle:"This ZIP cannot be migrated yet",unsupportedHint:"Update the project as instructed, then create a new migration and upload it again.",failedTitle:"Migration incomplete",cancelled:"This migration was stopped. Create a new migration and upload the project again."},jfe={ariaLabel:"Provide project analysis details",title:"Additional information needed for analysis",description:"The attachment stays locked; submitting continues read-only analysis only",submitting:"Continuing analysis…",submit:"Submit and continue analysis"},Nfe={ariaLabel:"Confirm migration method",title:"Confirm migration method",description:"Migration starts only after confirmation",framework:"Migration method",frameworkPlaceholder:"Select a migration method",agentName:"Agent name",entry:"Project entry point",entryPlaceholder:"Select a project entry point",entryExample:"For example, agent.py:agent",consent:"By selecting “Confirm and start migration,” you confirm the migration scope, exclusions, and key assumptions above.",starting:"Starting migration…",start:"Confirm and start migration"},Rfe={setup:{title:"Migration effect evaluation",description:"Evaluation cases run automatically after migration.",on:"On",off:"Off",unavailable:"Migration effect evaluation is unavailable in this environment.",casesTitle:"Evaluation cases",casesDescription:"Add at least one case. Expected outcomes and criteria are optional.",configuredSummary:"{{count}} cases · {{preset}} · {{dimensions}}",incompleteSummary:"{{count}} cases need content · {{preset}} · {{dimensions}}",dimensionSummary:"{{count}} dimensions",editSettings:"Edit settings",viewSettings:"View settings",lockedTitle:"Evaluation cases",lockedDescription:"Cases cannot change after upload starts.",closeAria:"Close evaluation settings",done:"Finish setup",close:"Close"},tabs:{label:"Migration task content",migration:"Migration",evaluation:"Evaluation",waitingMigration:"Waiting for migration",waitingConfiguration:"Setup required",running:"Running",completed:"Completed",issue:"Needs attention"},bulk:{open:"Paste multiple",label:"Enter one case per line",placeholder:`Check the status of today's orders
-Summarize the result in three points`,preview:"{{count}} cases will be added",confirm:"Add cases"},case:{title:"Case {{index}}",add:"Add case",moveUp:"Move case {{index}} up",moveDown:"Move case {{index}} down",copy:"Duplicate",delete:"Delete",userInput:"User input",userInputPlaceholder:"For example: Check the status of today's orders",expectedOutcome:"Expected outcome (optional)",expectedOutcomePlaceholder:"Describe what the Agent should accomplish; exact wording is not required",criteria:"Requirements (optional)",addCriterion:"Add requirement",criterionLabel:"Requirement {{index}}",criterionPlaceholder:"For example: Include the order ID and current status",removeCriterion:"Remove requirement {{index}}"},advanced:{title:"Advanced settings",standard:"Standard evaluation",standardDescription:"Uses 3 dimensions by default: semantic fidelity, output constraints, and workflow/tool fidelity.",custom:"Custom dimensions",customDescription:"Select one or more dimensions based on business risk.",lockedDescription:"The evaluation method and dimensions cannot change after upload starts."},dimension:{semantic_fidelity:"Semantic fidelity",output_contract:"Output contract",workflow_tool_fidelity:"Workflow and tool fidelity",context_memory_fidelity:"Context and memory fidelity",boundary_error_fidelity:"Boundary and error fidelity",safety_refusal_fidelity:"Safety and refusal fidelity"},dimensionDescription:{semantic_fidelity:"Checks whether intent, conclusions, and key facts remain consistent.",output_contract:"Checks required fields, structure, language, and formatting constraints.",workflow_tool_fidelity:"Checks observable workflow branches and tool-driven behavior.",context_memory_fidelity:"Checks supported multi-turn context and memory behavior.",boundary_error_fidelity:"Checks invalid input, missing information, and dependency failures.",safety_refusal_fidelity:"Checks existing authorization, refusal, and sensitive-data boundaries."},validation:{caseCount:"Keep between 1 and {{count}} cases.",dimensionRequired:"Select at least one evaluation dimension.",userInputRequired:"Enter case input.",userInputBytes:"A case cannot exceed 32 KiB.",expectedOutcomeBytes:"The expected outcome cannot exceed 16 KiB.",criteriaCount:"A case can contain at most {{count}} requirements.",criterionRequired:"Requirements cannot be empty.",criterionBytes:"One requirement cannot exceed 2 KiB.",datasetBytes:"All evaluation cases cannot exceed 10 MiB."},dataset:{invalidLockResponse:"The service did not confirm that evaluation cases were saved. Try again.",loadingSettings:"Loading evaluation settings…",loadSettingsFailed:"Evaluation settings could not be loaded.",retryLoadSettings:"Reload",missing:"No saved evaluation cases were found. Enter and save them again.",saveWarning:"Evaluation cases were not saved. Migration continues.",retrySave:"Save evaluation cases again",saving:"Saving…"},state:{disabled:"Evaluation is off",waiting_dataset:"Waiting for evaluation cases",pending:"Evaluation starts automatically after migration",preparing:"Preparing the evaluation environment…",waiting_environment:"Runtime environment variables are required",deploying:"Deploying a temporary Runtime…",executing:"Running evaluation cases…",judging:"Running evaluation analysis…",aggregating:"Aggregating evaluation results…",completed:"Evaluation completed",failed:"Evaluation incomplete",blocked:"Evaluation requires attention before it can continue",cancelled:"Evaluation cancelled"},progress:{label:"Migration and migration effect evaluation progress",migration:"Migration",evaluation:"Migration effect evaluation",notStarted:"Not started",inProgress:"In progress",completed:"Complete",waitingConfiguration:"Waiting for setup",issue:"Needs attention"},environment:{description:"Enter the environment variables required by the temporary Runtime.",security:"Used only for this evaluation.",optional:"Optional",submit:"Submit and continue evaluation",submitting:"Submitting…"},execution:{preparing:"Prepare evaluation",preparingDetail:"Validate migration output and {{count}} evaluation cases",deploying:"Start Runtime",deployingDetail:"Prepare {{runtime}}",runtimeFallback:"isolated runtime",executing:"Run cases",executingDetail:"Run {{count}} cases and capture output",judging:"Run evaluation analysis",judgingDetail:"Evaluate {{cases}} cases · {{dimensions}} dimensions",aggregating:"Generate evaluation report",aggregatingDetail:"Aggregate scores and evidence into an HTML report",waiting:"Waiting",running:"Running",failed:"Failed",complete:"Completed"},result:{title:"Execution progress",attempt:"Evaluation attempt {{attempt}}",pending:"Waiting for migration to complete",retry:"Run evaluation again",retrying:"Retrying…",failureStage:"Failed at",errorCode:"Error code",taskId:"Task ID",diagnosticAttempt:"Evaluation attempt",runtime:"Runtime",errorDetails:"Error details",diagnosticField:"{{label}}: {{value}}",diagnosticHeading:"{{label}}:",loadingReport:"Loading the evaluation report…",reportTitle:"HTML evaluation report",reportHtmlDescription:"View or download the HTML report.",viewReport:"View report",reportDrawerDescription:"Scores, differences, and evidence",closeReport:"Close",closeReportAria:"Close evaluation report",reportPreviewTitle:"Migration effect evaluation report preview",reportSummary:"Evaluation summary",reportVersion:"Dataset {{version}} · Prompt v{{prompt}}",downloadReport:"Download full report",downloadingReport:"Downloading…",overallScore:"Overall fidelity",scoreScale:"0–100; N/A when evidence is insufficient",evidenceCoverage:"Evidence coverage",coverageDetail:"{{scored}} of {{total}} dimensions evidenced",executionSuccess:"Execution success",executionDetail:"{{succeeded}} of {{total}} cases completed",naCount:"N/A count",naDescription:"Insufficient evidence; excluded from scores",gapDescription:"Migration gap summary",lowestScoringCases:"Lowest-scoring cases",executionFailures:"Execution issues",criticalEvidence:"Critical evidence",limitations:"Evaluation limitations",viewEvidence:"View results and evidence for {{count}} cases",outputTruncated:"Long output was truncated",executionState:{succeeded:"Execution completed",failed:"Execution issue"},severityLabel:"Severity: {{severity}}",severity:{none:"None",low:"Low",medium:"Medium",high:"High",critical:"Critical",unknown:"Unknown"},evidenceSource:{user_reference:"Expected outcome",user_criteria:"Provided requirements",source_contract:"Source contract",observed_output:"Observed output",runtime_observation:"Raw Runtime data",deterministic_assertion:"Deterministic assertion"},listSeparator:", "}},Ife={closeAria:"Dismiss error",loadFailed:"Could not load migration data. Try again.",refreshFailed:"Could not refresh the migration status. Try again."},Pfe={title:"Stop the current migration?",description:"Stopping ends the current analysis or migration process. Completed steps will not continue."},jUe={common:lfe,optimization:cfe,projects:ufe,framework:dfe,state:ffe,historyStatus:hfe,task:pfe,verification:mfe,transfer:gfe,validation:bfe,duration:yfe,expiry:vfe,analysis:xfe,activity:wfe,artifact:Ofe,model:kfe,upload:Sfe,deployment:Efe,workspace:Cfe,actions:Tfe,capability:Afe,conversation:_fe,questions:jfe,confirmation:Nfe,evaluation:Rfe,errors:Ife,stopDialog:Pfe},NUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Tfe,activity:wfe,analysis:xfe,artifact:Ofe,capability:Afe,common:lfe,confirmation:Nfe,conversation:_fe,default:jUe,deployment:Efe,duration:yfe,errors:Ife,evaluation:Rfe,expiry:vfe,framework:dfe,historyStatus:hfe,model:kfe,optimization:cfe,projects:ufe,questions:jfe,state:ffe,stopDialog:Pfe,task:pfe,transfer:gfe,upload:Sfe,validation:bfe,verification:mfe,workspace:Cfe},Symbol.toStringTag,{value:"Module"})),Dfe={loading:"Loading…",searchLabel:"Search {{label}}",searchPlaceholder:"Search {{label}}",retry:"Retry",noMatches:"No matches",noOptions:"No options available",selection:"{{label}}: {{value}}"},Mfe={badge:"All new",view:"See what's new",title:"What's new",defaultNotes:{multiRegion:"Multi-region agents: load Beijing and Shanghai Runtimes in parallel, with more available as you scroll.",switchAgent:"Switch in conversation: choose an agent beside the composer and start a new conversation immediately.",visualCanvas:"Visual execution canvas: inspect multi-agent structures on a horizontal canvas with fullscreen support."}},Lfe={label:"New conversation workspace",agent:"Agent",skill:"Skill customization",video:"Video creation"},$fe={select:"Select conversation mode",agent:{label:"Agent",description:"Chat with the selected Agent"},builtin:{label:"Built-in Agent",description:"Use an Agent provided by the platform"},codex:{label:"Codex Agent",description:"Run tasks in a sandbox"},deepseekHarness:{label:"DeepSeek Harness",description:"Open the DeepSeek Harness workspace"},arkClaw:"ArkClaw",hermes:"Hermes Agent",checking:"Checking configuration",notConfigured:"Not configured by an administrator",unavailable:"Unavailable"},Ffe={select:"Select Agent",typesLabel:"Agent types",listLabel:"{{type}} list",types:{agent:"Agent",general:"General Agent",codex:"Codex Agent",deepseekHarness:"DeepSeek Harness",openclaw:"OpenClaw Agent",hermes:"Hermes Agent"},loading:"Loading Agents",reload:"Reload",empty:"No {{type}} yet",emptyLocal:"No local Agents yet",emptyGeneral:"No General Agents yet",createHint:"Create one from the Agents page",localHint:"Check the directory where Studio was started",waking:"Waking up",opening:"Opening",connecting:"Connecting",loadingMore:"Loading",loadMore:"Load more",runtimeTimeout:"Loading Agents timed out after 15 seconds. Check the network or Runtime service and retry.",loadGeneral:"Load General Agents",loadType:"Load {{type}}",connectGeneral:"Connect to General Agent",openLocal:"Open local Agent",openType:"Open {{type}}",wakingHint:"Waking the agent. This may take some time."},Bfe={spaceAria:"Skill spaces",configuration:"Skill customization settings",actions:{create:"Generate Skill",optimize:"Optimize Skill"},selectAction:"Select a Skill customization action",actionList:"Skill customization actions",style:"Style",selectStyle:"Select style",model:"Model",selectModel:"Select model",styles:{concise:"Concise and practical",strict:"Rigorous and reliable",tutorial:"Tutorial-friendly",automation:"Automation-first"},modelLoadFailed:"Failed to load model configuration",spaceLoadFailed:"Failed to load Skill Spaces",skillLoadFailed:"Failed to load Skills",unnamedSpace:"Unnamed Skill Space",space:"Skill Space",select:"Select Skill",selectAria:"Select Skill: {{skill}}",loadingSpaces:"Loading Skill Spaces",reload:"Reload",emptySpaces:"No Skill Spaces yet",skillList:"{{space}} Skill list",loadingSkills:"Loading Skills",emptySkills:"No Skills yet"},Ufe={modes:{auto:"Auto detect",text_to_video:"Text to video",reference_to_video:"Reference to video",video_editing:"Video editing",video_extension:"Video extension",first_last_frame:"First and last frames"},taskNames:{auto:"Video generation",text_to_video:"Text-to-video",reference_to_video:"Reference-to-video",video_editing:"Video editing",video_extension:"Video extension",first_last_frame:"First-and-last-frame generation"},controls:{label:"Video creation settings",aspectRatio:"Aspect ratio",selectAspectRatio:"Select aspect ratio",resolution:"Resolution",selectResolution:"Select resolution",duration:"Duration",durationShort:"{{count}}s",durationAria:"Video duration: {{count}} seconds",lastFrame:"Last frame",lastFrameHelper:"Add the video's ending frame",assistImage:"Supporting image",referenceImage:"Reference image",assistImageHelper:"Add visual guidance",imageHelper:"Supports common image formats",referenceVideo:"Reference video",videoHelper:"Supports common video formats",optional:"Optional",replace:"Replace",add:"Add",upload:"Upload {{label}}",replaceFile:"Replace {{label}}: {{name}}",removeFile:"Remove {{label}} {{name}}",storageUnavailable:"Persistent storage is not configured",loadingEnhancer:"Loading prompt enhancement model",enhancerHint:"Uses {{model}} for intent recognition and prompt enhancement",enhancerUnavailable:"Prompt enhancement model unavailable"},task:{title:"Video generation task",closeAria:"Close video generation task dialog",progressAria:"Video generation progress",optimizedPrompt:"Optimized prompt",processingAria:"{{task}} progress",waitingAria:"{{status}}, elapsed {{elapsed}}",elapsed:"Elapsed {{elapsed}}",previewAria:"Generated video preview",close:"Close",download:"Download video",retryOptimization:"Retry prompt optimization",retryGeneration:"Retry video generation",providerQueued:"Waiting for model scheduling",providerRunning:"Model generating",providerSubmitting:"Submitting task",queuedHint:"The task was submitted. Its status will update automatically when processing begins.",runningHint:"This may take several minutes. The video preview will appear here when complete.",backgroundHint:"You can close this dialog. The task will continue in the background.",successHint:"Your video is ready to preview or download.",activationHint:"Activate the service in the model console, then retry generation.",retryHint:"Fix the issue and retry the current step.",steps:{optimizationFailed:"Prompt optimization failed",optimizationDone:"Prompt optimization complete",optimizationActive:"Optimizing prompt",generationDone:"{{task}} complete",generationFailed:"{{task}} failed",generationQueued:"{{task}} queued",generationRunning:"Generating {{task}}",generationActive:"{{task}} in progress",generationPending:"Waiting for video generation",generationComplete:"Video generation complete"},elapsedHours:"{{hours}}h {{minutes}}m",elapsedMinutes:"{{minutes}}m {{seconds}}s",elapsedSeconds:"{{seconds}}s"}},Qfe={compactSelect:Dfe,featureNotice:Mfe,workspace:Lfe,mode:$fe,agentPicker:Ffe,skill:Bfe,video:Ufe},RUe=Object.freeze(Object.defineProperty({__proto__:null,agentPicker:Ffe,compactSelect:Dfe,default:Qfe,featureNotice:Mfe,mode:$fe,skill:Bfe,video:Ufe,workspace:Lfe},Symbol.toStringTag,{value:"Module"})),zfe="Review center",Vfe="Resource type to review",Hfe="Only administrators can access the review center",qfe="Search name, submitter or version",Wfe="Review status",Kfe="Pending: {{count}}",Gfe="Requests: {{count}}",Xfe={skill:"Skills",agent:"Agents"},Yfe={all:"All statuses",pending:"Pending",approved:"Approved",returned:"Returned",approving:"Publishing"},Zfe={application:"Request",submitter:"Submitter",version:"Version",submittedAt:"Submitted at",status:"Status",actions:"Actions"},Jfe={details:"Details",detailsFor:"View request for {{name}}",approve:"Approve",approveFor:"Approve request for {{name}}",return:"Return",returnFor:"Return request for {{name}}",close:"Close",backToDetails:"Back to details",confirmApprove:"Confirm approval",confirmReturn:"Confirm return",clearFilters:"Clear filters",refresh:"Refresh",cancel:"Cancel",resumeApproval:"Resume publishing"},ehe={title:"No review requests yet",description:"Submitted review requests will appear here",filteredTitle:"No matching requests",filteredDescription:"Try another search or change the review status"},the={title:"Request details",sections:"Request detail sections",overview:"Overview",files:"Submitted files · {{count}}",requestType:"Request type",update:"Version update",firstRelease:"First release",source:"Source",source_skill:"{{name}}’s personal skill space",source_agent:"{{name}}’s development environment",destination:"Publication target",destination_skill:"Shared skill space",destination_agent:"Shared agent",region:"Region",visibility:"Visibility after publication",shared:"Visible to everyone",description:"Description",changes:"Submission notes",example:"Usage example",history:"Review history",submitted:"{{name}} submitted this request",versionFixed:"Reviewing the submitted version only",instructions:"Instructions",filesTab:"Submitted files",filesFailed:"Could not load submitted files",unknownAuthor:"Unknown submitter",reviewer:"Reviewed by",reviewedAt:"Reviewed at",approved:"{{name}} approved the request",returned:"{{name}} returned the request",unknownReviewer:"Unknown reviewer",approvedBy:"Approved by",returnedBy:"Returned by",comment:"Review comment",result:"Review result",noHistory:"This skill has not been submitted for review",pendingHint:"Waiting for an administrator to review",approvingHint:"Approval is confirmed and publishing to the shared space is in progress",approving:"{{name}} confirmed approval; publishing is in progress"},nhe={failed:"The review space is unavailable",retry:"Retry"},ihe={approveTitle:"Approve request",returnTitle:"Return request",approveDescription:"Approving {{name}} {{version}} makes this version available to everyone in the enterprise shared space",returnDescription:"Return {{name}} {{version}} and explain what the applicant should change",reason:"Return reason",reasonRequired:"Enter a return reason",reasonHelp:"Up to 256 characters, visible to the applicant",saving:"Saving…",failed:"Review failed, please try again",approved:"{{name}} was approved and shared",returned:"{{name}} was returned",comment:"Comment (optional)",commentHelp:"Up to 256 characters, visible to the applicant"},rhe={title:"AI score",points:"{{score}} / 100",insufficient:"Insufficient evidence",status:{unscored:"Not scored",not_requested:"Not scored",queued:"Queued",running:"Scoring",completed:"Scored",failed:"Scoring failed"},loading:"Loading score…",starting:"Submitting for scoring…",loadFailed:"Could not load score",retryFailed:"Could not request scoring",failed:"Scoring failed, ask an administrator to retry",retry:"Score again",start:"Start scoring",reload:"Reload",download:"Download JSON",expand:"Expand",collapse:"Collapse",hint:"Scores apply to this submitted version and inform the administrator’s decision",dimensions:{safety:"Safety",usability:"Usability",completeness:"Completeness",reliability:"Reliability",maintainability:"Maintainability"},risks:"Risk flags",suggestions:"Suggestions",model:"Scoring model",rubric:"Rubric version",time:"Scored at",severity:{low:"Low risk",medium:"Medium risk",high:"High risk",critical:"Critical risk"},coverage:"Review coverage",coverageCount:"Reviewed {{included}} of {{total}} files",coverageIncomplete:"Some content was excluded, so scoring evidence is incomplete",omittedFile:"Not reviewed {{path}}: {{reason}}",truncatedFile:"Partially reviewed {{path}}: {{reason}}",originalError:"Original cloud error"},IUe={title:zfe,category:Vfe,adminOnly:Hfe,search:qfe,filterStatus:Wfe,pendingCount:Kfe,total:Gfe,kind:Xfe,status:Yfe,columns:Zfe,actions:Jfe,empty:ehe,detail:the,space:nhe,decision:ihe,score:rhe},PUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Jfe,adminOnly:Hfe,category:Vfe,columns:Zfe,decision:ihe,default:IUe,detail:the,empty:ehe,filterStatus:Wfe,kind:Xfe,pendingCount:Kfe,score:rhe,search:qfe,space:nhe,status:Yfe,title:zfe,total:Gfe},Symbol.toStringTag,{value:"Module"})),she={cancel:"Cancel",close:"Close",retry:"Retry",tryAgain:"Try again",closeDialog:"Close {{title}}",agentFallback:"{{agent}} Agent",unknownSource:"Unknown source"},ohe={terminalTitle:"Terminal",browserTitle:"Sandbox browser",terminalSubtitle:"Connect to the interactive terminal for the current AgentKit Session",browserSubtitle:"View and control the browser in the current AgentKit Session",connecting:"Connecting…",connected:"Connected",notConnected:"Not connected",opening:"Opening {{title}}",connectingSession:"Connecting the tool to the current AgentKit Session.",openFailed:"Failed to open {{title}}"},ahe={title:"Resume Codex conversation",subtitle:"Select a recently updated Thread from the current Sandbox Session",loading:"Loading conversation history",loadFailed:"Failed to load conversation history",empty:"No conversations to resume"},lhe={title:"Codex permissions",subtitle:"Settings are saved to the current Sandbox Session and applied to all of its Threads",sandboxMode:"Sandbox mode",approvalPolicy:"Approval policy",approvalMethod:"Approval method",networkAccess:"Allow network access",networkAccessHelp:"Control external network access in workspace-write and read-only modes.",fullAccessWarning:"Full access disables file system and network isolation. Use it only for trusted tasks.",save:"Save permissions",sandboxChoices:{readOnly:{label:"Read only",detail:"Allow reading files without writing to the workspace."},workspaceWrite:{label:"Workspace write",detail:"Allow reading and modifying files in the current workspace."},fullAccess:{label:"Full access",detail:"Disable sandbox isolation for explicitly trusted tasks."}},approvalChoices:{untrusted:{label:"Untrusted commands only",detail:"Request approval only for operations Codex considers untrusted."},onRequest:{label:"On request",detail:"Allow Codex to ask you to approve commands or file changes when needed."},never:{label:"Never ask",detail:"Codex will not pause to request manual approval."}},reviewerChoices:{user:{label:"Ask me",detail:"Approval requests appear in Studio for you to decide."},autoReview:{label:"Automatic review",detail:"Use the Codex automatic review flow to handle approval requests."}}},che={title:"Workspace",subtitle:"Choose the directory where the current Codex Thread runs commands and modifies files",absolutePath:"Absolute path",browse:"Browse",parent:"Parent directory",empty:"This directory has no subdirectories",locked:"The conversation has started and the workspace is locked. Start a new Sandbox Session to choose another workspace.",useDirectory:"Use this directory"},uhe={fileTitle:"Allow file changes?",commandTitle:"Allow command execution?",subtitle:"Codex is waiting for your decision",workingDirectory:"Working directory",decline:"Decline",acceptOnce:"Allow once",acceptSession:"Allow for session"},dhe={availableSkills:"Available Skills",selectModel:"Select model",commands:"Codex shortcuts",currentModel:"Current: {{model}}",loadingSkills:"Discovering Skills in the current workspace…",loadingModels:"Loading models…",noSkillMatches:"No matching Skills in the current workspace",noModelMatches:"No matching models. You can also enter a model ID directly",noCommandMatches:"No matching shortcuts",skillFallback:"Load and run this Skill",add:"Add",uploadImage:"Upload image",uploadDocument:"Upload document or PDF",uploadVideo:"Upload video",openTerminal:"Open terminal",viewBrowser:"View browser",permissions:"Codex permissions",workspaceLocked:"The conversation has started and the workspace is locked",selectWorkspace:"Select workspace",workspace:"Codex workspace",endpointCopied:"Endpoint copied",copyEndpoint:"Copy Sandbox Endpoint",continuePlaceholder:"Describe what you want to implement or adjust next",messagePlaceholder:"Message the AgentKit Sandbox. Type / for commands or $ to invoke a Skill…",stop:"Stop generating",send:"Send",stopping:"Confirming stop…",resume:"Resume task",steer:"Add instructions",steerPlaceholder:"Add instructions, or stop the task at any time…"},fhe={defaultName:"My Agent",namedDefault:"My {{agent}}",creatingTitle:"Creating {{agent}} Agent",failedTitle:"Launch failed",createTitle:"Create {{agent}} Agent",fallbackError:"AgentKit Sandbox initialization failed. Please try again later.",creatingDescription:"Creating the {{agent}} Agent and waiting for it to become ready. This usually takes about 30 seconds.",name:"Agent name",storageSize:"Storage size",storageHelp:"Data will be persisted. Choose {{min}}–{{max}} GiB.",persistent:"Persistent",persistenceUnsupported:"Snapshot persistence is not supported in the current environment",persistentHelp:"Keep Agent data so you can continue later.",temporaryHelp:"Agent data will be cleared after 8 hours",cancelCreation:"Cancel creation",confirm:"Create",retry:"Try again"},hhe={activeAria:"Codex Agent session is active",openAria:"Open a Codex Agent session",active:"Codex Agent session",entry:"Spark an idea",exit:"Exit current Agent",expired:"Expired",remainingHours:"{{hours}}h {{minutes}}m remaining",remainingMinutes:"{{minutes}}m remaining",expiryWarning:"The remote development environment is kept for up to 8 hours and expires at {{expiry}} ({{remaining}}). Conversations and files will then be deleted.",usingAgent:"You are currently using the {{agent}} Agent",activityAria:"Sandbox activity log",activity:"Activity log",tokenUsageAria:"Codex token usage",tokens:"{{label}}: {{value}} tokens",tokenLabels:{total:"Total",input:"Input",cachedInput:"Cached input",output:"Output",reasoningOutput:"Reasoning output"}},phe={back:"Back to Agents",subtitle:"{{agent}} agent details",type:"Agent type",status:"Status",createdBy:"Created by",snapshotStatus:"Snapshot status",toolType:"Tool type",createdAt:"Created at",snapshotReason:"Snapshot reason",expiresAt:"Expires at",snapshotId:"Snapshot ID",sessionId:"Session ID",sourceSessionId:"Source Session ID",delete:"Delete Agent",waking:"Waking…",opening:"Opening…",wake:"Wake Agent",open:"Open Agent",deleteTitle:"Delete Agent?",deleteDescription:"Delete “{{name}}” and its saved data? This cannot be undone.",deleting:"Deleting…",confirmDelete:"Delete",sleepingHint:"This agent is asleep. Waking it before opening may take some time.",wakingHint:"Waking the agent. This may take some time.",agentId:"Agent ID"},mhe={back:"Back to Agents",createdBy:"Created by {{creator}}",ariaLabel:"Agent workspace",main:"Main",terminal:"Terminal",mainTitle:"{{agent}} main interface",openingTerminal:"Opening terminal…",terminalTitle:"{{agent}} terminal"},ghe={prompt:`Use the AgentKit Studio Plugin to hand off the current conversation, project, and task to the cloud. Execute this directly; do not ask me to open a terminal manually.
+- Maintain a polite, professional tone.`},Nue={requestFailed:"Request failed ({{status}}){{detail}}",a2aSpaces:{credentialsMissing:"The server does not have cloud provider credentials configured, so AgentKit agent centers are unavailable",loginRequired:"Sign in to access AgentKit agent centers"},vikingKnowledge:{credentialsMissing:"The server does not have cloud provider credentials configured, so VikingDB knowledge bases are unavailable",loginRequired:"Sign in to access VikingDB knowledge bases"},vikingMemory:{credentialsMissing:"The server does not have cloud provider credentials configured, so VikingDB memory stores are unavailable",loginRequired:"Sign in to access VikingDB memory stores"},mcpGateway:{missingHttpTool:"Go back to Add MCP tool and add at least one HTTP MCP service. MCP resilience does not support stdio services.",missingUrl:"An HTTP MCP tool is missing a valid service URL. Go back to Add MCP tool and complete it before publishing."},customModel:{fallbackName:"Custom model",apiKeyLabel:"{{name}} model API Key",fallbackApiKeyLabel:"{{name}} fallback model {{model}} API Key"},deploymentEnv:{serverInjected:"Provided by the server",selectedApiKeyPlaceholder:"Provided by the selected API Key",mcpInjectedComment:"Provided by the added MCP tools",restoredPlaceholder:"Securely restored by the Studio server",generatedMcpPlaceholder:"Generated from the added HTTP MCP tools",restoredHelp:"When updating, the Studio server merges MCP addresses and authentication without returning existing secrets to the browser.",mergedMcpHelp:"The Studio server merges MCP addresses and optional authentication without returning existing secrets to the browser.",listSeparator:", ",requirementHint:"Required by the following optimizations: {{labels}}.",requiredBy:"Required by the following optimizations: {{labels}}. Enter {{key}}.",required:"Enter {{label}} ({{key}}).",invalidJson:"Invalid JSON format"},drafts:{unsupportedVersion:"This local draft version is not supported. Upgrade Studio and try again.",invalidFormat:"The local draft data is invalid.",readFailed:"Could not read local drafts. The browser data may be corrupted.",quotaExceeded:"Browser storage is full, so the draft was not saved. Delete unused drafts or clear this site's storage, then try again.",writeRejected:"The browser blocked saving this draft. Check the site's storage permissions and try again."},skills:{searchFailed:"Search failed ({{status}})",downloadFailed:"Skill download failed ({{status}})",agentKitRequestFailed:"AgentKit Skills request failed",missingManifest:"{{location}} is missing SKILL.md",invalidParentPath:"{{location}} contains an invalid parent path (..): {{path}}",invalidPath:"{{location}} contains an invalid path: {{path}}",localDescription:"Local skill",folderSource:"Folder",noManifest:"No SKILL.md was found in {{location}}"},zip:{invalid:"Invalid zip: EOCD was not found",tooManyFiles:"A zip file cannot contain more than {{count}} files",tooLarge:"The extracted zip content is too large"}},Rue={back:"Back to development session",runtimeName:"Runtime name",runtimeNameExists:"This Runtime name already exists. Choose another name.",checkingRuntimeName:"Checking Runtime name",verifiedSource:"Verified source",deployableSource:"Deployable source",verifiedByCodex:"Verified by Codex in the cloud",entryPoint:"Entry point",files:"Files",artifact:"Artifact",validationReport:"Validation report",verifiedHint:"The server materializes source from the verified artifact. Browser files cannot replace it.",unverifiedHint:"The server securely materialized the source. Confirm the Runtime configuration before deploying.",env:{requiredPlaceholder:"Enter {{key}}",optionalPlaceholder:"Optional: {{key}}"}},Iue={name:"Code package",back:"Back to creation methods",reading:"Reading the code package",readingEllipsis:"Reading the code package…",uploadFirst:"Upload a code package first",uploadAriaLabel:"Code package upload",upload:"Upload code package",reupload:"Upload a different code package",uploadPrompt:"Upload a code package",filesRecognized:"{{count}} files found. Select this area to upload a different package.",dropHint:"Select or drop a .zip file up to 50 MB. Use app.py or declare an entry point in agentkit.yaml.",viewFiles:"View files",chooseFile:"Choose code package",errors:{invalidFormat:"Choose a .zip code package.",tooLarge:"The code package must be 50 MB or smaller.",invalidPath:"The archive contains an invalid path: {{name}}",empty:"The archive does not contain any deployable files.",tooManyFiles:"A code package cannot contain more than {{count}} files.",duplicateFile:"The code package contains a duplicate file: {{path}}",manifestParse:"Could not parse agentkit.yaml: {{detail}}",manifestRoot:"The root of agentkit.yaml must be an object.",manifestCommon:"common in agentkit.yaml must be an object.",entryPointType:"common.entry_point in agentkit.yaml must be a file path.",entryPointInvalid:"common.entry_point in agentkit.yaml is not a valid file path.",entryPointMissing:"The entry point declared in agentkit.yaml is missing from the code package: {{entryPoint}}",defaultEntryPointMissing:"The code package root must contain app.py, or common.entry_point in agentkit.yaml must declare an existing entry point."}},Pue={label:"Agent execution canvas",readOnlyLabel:"Read-only agent execution canvas",minimapLabel:"Execution flow minimap",controls:{ariaLabel:"Execution flow controls",zoomIn:"Zoom in",zoomOut:"Zoom out",fitView:"Fit view"},rootAgent:"Main agent",unnamedStep:"Unnamed step",terminals:{input:"User request",output:"Final response"},edges:{then:"Then",continueLoop:"Continue loop",call:"Call"},patterns:{llm:{label:"Agent",description:"Understand a task and complete one specific job"},sequential:{label:"Sequential",description:"Run internal steps one after another"},parallel:{label:"Parallel",description:"Run internal steps together, then combine their results"},loop:{label:"Loop",description:"Repeat internal steps until the stop condition is met"},a2a:{label:"Remote agent",description:"Call an existing remote agent"}},actions:{insertHere:"Insert a step here",deleteNamed:"Delete {{name}}",deleteNode:"Delete node",addSubagent:"Add subagent",addParallelStep:"Add a parallel step",addLoopStep:"Add a loop step",addNextStep:"Add next step",addFirst:"Add at the beginning",addLast:"Add at the end"}},Due={title:"Intelligent build",subtitle:"Describe what you need. Build, debug, and validate your agent.",model:{label:"Model",placeholder:"Select a model",retiring:"Retiring soon",currentConfiguration:"Current configuration",loadError:"Failed to load models"},availability:{checking:"Checking intelligent development availability…",unavailable:"Intelligent mode is currently unavailable. Go back and try again."},goal:{title:"Start with a goal",continueTitle:"Continue improving the project",hint:"Describe the problem your agent should solve. We will ask about any details that could affect the result.",continueHint:"Describe what you want to change. The result will be saved as a new version.",basedOn:"Based on",clearSelection:"Clear selection",label:"Goal",optimizationLabel:"Optimization goal",placeholder:"For example: Build an agent that reads sales data, creates weekly reports, and validates the output format",optimizationPlaceholder:"For example: Cite data sources and ask the user when information is incomplete"},actions:{preparing:"Preparing…",build:"Start building",optimize:"Start optimizing"},preparation:{accepted:"Goal received. Implementation is starting now.",preparing:"Creating the task environment…",starting:"Environment ready. Starting Codex…",next:"Next, Codex will plan the approach, then build, run, and validate the agent."},tasks:{title:"Tasks in progress",hint:"Work continues when you leave. Return to follow progress or add instructions.",refresh:"Refresh tasks",loading:"Loading tasks…",empty:"No tasks in progress",emptyHint:"Once a build starts, you can return to it here.",loadError:"Unable to load tasks. Please retry.",openError:"Unable to open this task. Please retry.",startedAt:"Started {{time}}",open:"Open task",opening:"Connecting…",states:{queued:"Queued",running:"Building",recovering:"Reconnecting",waiting_user:"Awaiting your reply",stopping:"Stopping",succeeded:"Completed",failed:"Incomplete",cancelled:"Stopped"}}},Mue={title:"Saved projects",description:"Continue improving an existing version, or view, download, and deploy its source.",refresh:"Refresh projects",checkingStorage:"Checking project storage…",unavailableTitle:"Projects are temporarily unavailable",storageCheckError:"Could not confirm project storage status. Try again shortly.",storageNotConfigured:"Project storage is not configured.",loadingMigrated:"Loading migrated projects…",loadingSaved:"Loading saved projects…",loadingVersions:"Loading project versions…",unknownTime:"Unknown time",sourceDownloaded:"Source downloaded.",projectSummary_one:"{{count}} version · Updated {{time}}",projectSummary_other:"{{count}} versions · Updated {{time}}",versionSummary_one:"{{time}} · {{count}} file",versionSummary_other:"{{time}} · {{count}} files",noVersionDescription:"No version description",latestVersion:"Latest version",defaultVersionName:"Version · {{time}}",rename:{projectTitle:"Edit project name",versionTitle:"Edit version name",projectLabel:"Project name",versionLabel:"Version name",hint:"Use letters, numbers and common punctuation, up to {{max}} characters.",required:"Enter a name.",tooLong:"Names can contain up to {{max}} characters.",invalidCharacters:"Names cannot contain line breaks, control or invisible formatting characters, or < >.",save:"Save name",saving:"Saving…",updated:"Name updated.",failed:"Unable to save the name. Try again."},verified:"Verified",pendingVerification:"Needs review",viewSource:"View source",download:"Download",downloading:"Downloading…",optimize:"Optimize",optimizeUnavailable:"Optimize, not supported",errors:{projects:"Could not load saved projects.",source:"Could not load project source.",versions:"Could not load project versions.",download:"Could not download the source.",prepareDeployment:"Could not prepare the source for deployment.",deleteVersion:"Could not delete the project version.",migrated:"Could not load migrated projects",saved:"Could not load saved projects"},empty:{migratedTitle:"No migrated projects yet",savedTitle:"No saved projects yet",migratedDescription:"Source will be saved here after your first migration.",savedDescription:"Source will be saved here after your first build.",noVersions:"This project has no available versions."},compare:{selected:"{{count}}/2 selected",selectedLabel:"Selected",select:"Select",view:"View comparison",start:"Compare versions"},delete:{title:"Delete this version?",onlyVersion:"“{{name}}” has only one version. Deleting it will also remove the project. This cannot be undone.",description:"This version's source and validation records will be permanently deleted. Other versions are not affected.",confirm:"Delete version"}},Lue={title:"Choose how to create",subtitle:"Build your agent with the workflow that fits your needs",features:"Features",quick:{title:"Quick mode",description:"Delegate tasks to dynamically created subagents",features:{dynamicSubagents:"Dynamic subagents",autonomousPlanning:"Autonomous planning",collaboration:"Multi-agent collaboration",summary:"Automatic result summaries",skills:"Skills on demand",trace:"Traceable task execution"}},traditional:{title:"Advanced mode",description:"Customize your agent structure in detail",features:{visualConfig:"Visual configuration",migration:"Existing agent migration",debugging:"Live debugging",optimization:"Optional optimization",parameters:"Fine-grained controls"}}},$ue={placeholder:"Enter a system prompt. Type ## followed by a space to add a level-two heading…",toolbar:{undo:"Undo {{shortcut}}",redo:"Redo {{shortcut}}",paragraph:"Paragraph",quote:"Quote",heading:"Heading {{level}}",selectBlockType:"Select text style",blockType:"Text style",bold:"Bold",removeBold:"Remove bold",italic:"Italic",removeItalic:"Remove italic",bulletedList:"Bulleted list",numberedList:"Numbered list"}},Fue={local:{duplicatesSkipped:"Skipped duplicate skills: {{names}}",invalidDrop:"Drop a folder containing SKILL.md or a .zip file",readError:"Could not read the files: {{detail}}",dropLabel:"Drop a folder or ZIP file to detect skills automatically",hint:"Each skill must contain a SKILL.md file. Directories can contain multiple skills.",reading:"Reading files…",fileCount:"Local · {{count}} files"},hub:{searchError:"Search failed. Try again shortly.",searchPlaceholder:"Search Volcano Find Skill, such as data analysis or PDF",search:"Search",searching:"Searching…",noResults:"No matching skills found. Try another keyword.",hint:"Search Volcano Find Skill by keyword. Selected skills are downloaded to the skills/ directory when the project is generated."},space:{loadError:"Failed to load",loadingSpaces:"Loading AgentKit Skills centers…",noSpaces:"This account has no AgentKit Skills centers.",selectSpace:"Select an AgentKit Skills center",openConsole:"Open in the Volcano Engine console",loadingSkills:"Loading skills…",noSkills:"This AgentKit Skills center has no skills."}},Bue={unnamedNode:"Unnamed node",editInstruction:"Select to edit instructions…",controls:{ariaLabel:"Workflow canvas controls",zoomIn:"Zoom in",zoomOut:"Zoom out",fitView:"Fit view"},sections:{info:"Workflow information",execution:"Execution mode",nodes:"Nodes",nodeConfig:"Node configuration"},types:{sequential:{label:"Sequential",description:"Run nodes one after another"},parallel:{label:"Parallel",description:"Run nodes at the same time"},loop:{label:"Loop",description:"Run nodes repeatedly"}},placeholders:{description:"Describe what this workflow does…",agentDescription:"Describe what this agent does…",instruction:"You are…"},errors:{workflowNameUnique:"The workflow name must be unique among agent node names",agentNameUnique:"Agent names must be unique within this workflow"},dragHint:"Drag onto the canvas, or use the button below",agentNode:"Agent node",addNode:"Add node",connectHint:"Drag between node handles to define the execution order.",create:"Create workflow",deleteNode:"Delete node",nameHelp:"Use only letters, numbers, and underscores. Names must be unique.",instruction:"Instructions",tools:"Tools (comma-separated)",nodeId:"Node ID",empty:{selectNode:"Select a node to edit its configuration",summary:"{{nodes}} nodes · {{edges}} connections"}},Uue={ariaLabel:"Quick mode creation",progress:"Quick mode creation progress",steps:{agent:{label:"Agent",title:"Basic information",description:"Set the agent's name, purpose, behavior, and capabilities"},environment:{label:"Environment",title:"Configure the environment",description:"Choose the default environment or a custom environment you have built"},deployment:{label:"Deployment",title:"Deployment preferences",description:"Configure AgentKit cloud settings"}},model:{label:"Model",source:"Model source",name:"Model name",fallbacks:"Fallback models",fallbackPlaceholder:"Fallback model name",addFallback:"Add fallback model",addProviderFallback:"Add other provider",removeFallback:"Remove",fallbackType:"Fallback model type",fallbackSameProvider:"Same provider",fallbackOtherProvider:"Other provider",apiKeyEnv:"API Key environment variable",invalidApiKeyEnv:"Use letters, numbers, and underscores only, and do not start with a number.",fallbackHelp:"Same-provider fallbacks reuse the primary connection. Other providers use separate provider, API base, and API Key settings.",fallbackIgnored:"Empty, duplicate, or primary-model entries will be ignored.",provider:"Provider",invalidApiBase:"Enter a valid http:// or https:// URL.",volcengineArk:"Volcano Ark",custom:"Custom",gateway:"Model gateway",comingSoon:"Coming soon",currentApiKey:"Current API Key",currentConfiguration:"Current configuration",loadingApiKeys:"Loading API Keys",selectApiKey:"Select an API Key",searchApiKeys:"Search API Key names",noApiKeys:"No API Keys available",loadingModels:"Loading models",selectModel:"Select a model",searchModels:"Search by name, Model ID, or provider",noModels:"No models available",apiKeyPlaceholder:"Enter a model API Key",credentialsLoadError:"Failed to load model credentials",modelsLoadError:"Failed to load models"},identity:{unnamedPool:"Unnamed user pool",currentPool:"{{value}} (current user pool)",userPool:"User pool",loading:"Loading user pools",placeholder:"Select a user pool",search:"Search user pools",empty:"This account has no Identity user pools",currentHint:"This Studio's login JWT will be forwarded to the Runtime",mismatchHint:"The selected user pool is not used by this Studio, so the Studio will not be able to call the Runtime after deployment",selectionHint:"The user pool used by this Studio is marked in the list"},agent:{namePlaceholder:"Enter an agent name",descriptionPlaceholder:"Describe what this agent can do",prompt:"Prompt",promptPlaceholder:"Define the role, goals, and behavior boundaries",skills:"Skills",addSkill:"Add skills"},validation:{descriptionRequired:"Enter a description",promptRequired:"Enter a prompt",modelRequired:"Select a model",apiKeyRequired:"Enter or select the model API Key",instanceIntegers:"Minimum instances must be an integer of 0 or greater, and maximum instances must be an integer greater than 0",instanceOrder:"Minimum instances cannot exceed maximum instances",userPoolRequired:"Select a user pool for Runtime authentication"},deployment:{runtimeName:"Runtime name",runtimeNameUpdateHint:"The existing Runtime name is preserved during updates",runtimeNameHint:"Use only letters, numbers, underscores, and hyphens",region:"Deployment region",authentication:"Authentication",apiKeyDescription:"Default: access with the Runtime API Key",userPoolDescription:"Use a JWT issued by an Identity user pool",sessionStorage:"Session storage",inMemoryStorage:"Temporary in-memory storage",backends:{sqlite:"SQLite file",mysql:"MySQL",postgresql:"PostgreSQL"},instances:"Instance settings",minInstances:"Minimum instances",maxInstances:"Maximum instances",inMemoryHint:"To prevent session loss across instances, keep the Runtime at 1–1 instances",networkMode:"Network mode",network:{public:"Public",private:"Private",both:"Public and private"},subnetIds:"Subnet IDs (optional, comma-separated)",sharedInternet:"Shared public egress in the VPC",sharedInternetHint:"Allow private Runtimes to access the public internet through shared egress",evaluationSets:"Evaluation sets",createEvaluationSets:"Create evaluation sets automatically",evaluationSetsHint:"Create Good Case and Bad Case evaluation sets after deployment",resources:"Resource configuration",complete:"Deployment complete",preparing:"Preparing deployment…"},environmentVariables:{title:"Environment variables",add:"Add variable",nameAriaLabel:"Environment variable name",valueAriaLabel:"Value for {{name}}",deleteNamed:"Delete {{name}}"},actions:{updateAgain:"Update again",deployAgain:"Deploy again",updateAndPublish:"Update and publish"}},Que={actions:{addSubagent:"Add subagent",clearRoot:"Clear main agent",clearRootConfirmation:"Clear all settings and subagents from the main agent? This cannot be undone."},workspace:{progress:"Agent creation progress",modes:{build:"Build",validate:"Debug",optimize:"Optimize",environment:"Environment",publish:"Publish"},titles:{build:"Customize your agent architecture",validate:"Debug your agent",optimize:"Choose optimizations for your agent",environment:"Configure the cloud environment",publish:"Prepare your agent for deployment"}},sections:{type:{label:"Agent type",hint:"Choose an agent type"},basic:{label:"Basic information",hint:"Name, description, and system prompt"},model:{label:"Model",hint:"Model and service (optional)"},tools:{label:"Tools",hint:"Callable capabilities"},skills:{label:"Skills",hint:"Declarative skills"},knowledge:{label:"Knowledge base",hint:"External knowledge retrieval"},memory:{label:"Memory",hint:"Short-term and long-term memory"},subagents:{label:"Subagents",hint:"Nested collaboration"},review:{label:"Finish",hint:"Preview and create"}},agentTypes:{ariaLabel:"Agent type",remoteChildOnly:"Remote agents can only be used as child steps",llm:{label:"Agent",fullLabel:"LLM agent",description:"Uses an LLM to complete tasks autonomously"},sequential:{label:"Sequential",fullLabel:"Sequential agent",description:"Runs subagents one after another"},parallel:{label:"Parallel",fullLabel:"Parallel agent",description:"Runs subagents in parallel, then combines their results"},loop:{label:"Loop",fullLabel:"Loop agent",description:"Repeats subagents until the stop condition is met"},a2a:{label:"Remote agent",fullLabel:"Remote agent",description:"Calls a remote agent through the A2A protocol"}},basic:{agentName:"Agent name",name:"Name",agentDescription:"Agent description",descriptionPlaceholder:"Briefly describe what this agent does so your team can identify it…",nameHelp:"Follow Google ADK naming rules and keep the name unique in the execution flow.",rootDescriptionHelp:"The full description is preserved and converted to a Runtime-compatible single line during deployment.",descriptionHelp:"The description appears in agent lists and selectors.",orchestratorHelp:"This is a collaboration container and does not answer directly. Add task steps on the canvas and drag them to reorder.",maxIterations:"Maximum iterations",maxIterationsHelp:"The loop repeats its subagents until the condition is met or this limit is reached.",agentCenter:"AgentKit agent center",agentCenterHelp:"The remote agent's name, description, and capabilities come from the Agent Card returned by the center. The system discovers and attaches matching agents for each task.",moreOptions:"More options",systemPrompt:"System prompt",loadingMarkdown:"Loading Markdown editor…",markdownHelp:"Markdown shortcuts are supported. For example, type ## followed by a space to create a level-two heading.",unnamed:"Unnamed",unnamedAgent:"Unnamed agent"},validation:{remoteRoot:"A remote agent can only be a subagent",missingRegistry:"Select an AgentKit agent center",name:{required:"Name is required",reserved:"user is reserved by Google ADK. Choose another name.",characters:"Start with a letter or underscore and use only letters, numbers, and underscores"},duplicateName:"Agent names must be unique within this structure",missingDescription:"Description is required",mcpDuplicateName:"MCP names must be unique",mcpDuplicateUrl:"Remove the duplicate MCP endpoint before publishing",missingSubagent:"A subagent is required",missingPrompt:"System prompt is required",apiKeyRequired:"Enter or select the model API Key",missingSubagentDetail:"Add at least one subagent to {{type}} before debugging or publishing.",problem:"{{name}}: {{problem}}"},ai:{ariaLabel:"Fill agent configuration with AI",minimumLength:"Enter at least {{count}} characters.",replaceConfirmation:"The generated configuration will replace the current canvas and settings. Continue?",placeholder:"Describe your goal and use {{model}} to generate the configuration",generate:"Generate",generating:"Generating",success:"Configuration generated",regenerate:"Generate again",failed:"Generation failed"},debug:{ariaLabel:"Agent debugging workspace",unavailable:"This backend does not currently support generated-agent debug runs.",baseline:"Baseline",comparison:"Variant {{count}}",selectModel:"Select a model",enterDescription:"Enter a description",enterPrompt:"Enter a system prompt",duplicateConfiguration:"Test configurations must be unique",starting:"Starting…",applyAndRestart:"Apply and restart",restart:"Restart",start:"Start environment",defaultModel:"Default model",testConfiguration:"Test configuration",deleteVariant:"Delete {{name}}",deleteVariantGroup:"Delete comparison variant",creatingEnvironment:"Creating the test environment…",configurationChanged:"The configuration changed. Restart the environment.",ready:"Environment ready",readyHint:"Send a message to compare agent responses.",startHint:"Complete the configuration, then start the environment.",viewTraceNamed:"View the trace for {{name}}",traceUnavailable:"Send a message to view its trace",trace:"Trace",useConfiguration:"Use this configuration",finishConfiguration:"Finish configuration",finishAndStart:"Finish and start",currentAgentModel:"Current agent model",configurationHint:"Changes apply only to this comparison. Select this configuration to continue to deployment.",messagePlaceholder:"Send a message to the running test environments…",startOneFirst:"Start at least one test environment first",addVariant:"Add variant",traceTitle:"Trace · {{name}}",leaveTitle:"Leave debugging?",leaveDescription:"The current environments will be removed when you leave. You can start new environments when you return.",cleaning:"Cleaning up…",confirmLeave:"Leave",closeLeaveConfirmation:"Close leave-debugging confirmation"},optimization:{ariaLabel:"Agent optimization options",scenario:"Optimization scenario",components:"Optimization components",bytePlusUnavailable:"Harness Sidecar optimizations are not available for BytePlus accounts yet. Leave all optimizations unselected to continue; regular BytePlus agents are not affected.",releaseScenario:"Optimization scenario: {{profile}}",profiles:{default:{label:"Custom",description:"Choose components as needed. The Sidecar stays off when none are selected."},ops:{label:"Operations",description:"For operations diagnostics, databases, logs, and monitoring MCP servers."}},groups:{quality:"Improve response quality",cost:"Reduce runtime cost",stability:"Improve runtime stability"},options:{context_engine:{label:"Context management",description:"Manage context assembly, task anchoring, and context budgets."},compressor:{label:"Context and result compression",description:"Compress long context and large tool results to reduce token usage."},verifier:{label:"Response verification and repair",description:"Verify evidence and responses, then repair or alert on failure."},long_run_control:{label:"Goal task control",description:"Manage progress, continuation, and completion conditions for Goal tasks."},mcp_resilience:{label:"MCP resilience",description:"Manage connections, timeouts, empty results, large responses, and call budgets. Includes read-only SQL protection by default."}}},model:{label:"Model",source:"Model source",volcanoArk:"Volcano Ark",volcengineArk:"Volcano Ark",bytePlusModelArk:"BytePlus ModelArk",custom:"Custom",gateway:"Model gateway",comingSoon:"Coming soon",configuration:"Model configuration",name:"Model name",fallbacks:"Fallback models",fallbackPlaceholder:"Fallback model name",addFallback:"Add fallback model",addProviderFallback:"Add other provider",removeFallback:"Remove",fallbackType:"Fallback model type",fallbackSameProvider:"Same provider",fallbackOtherProvider:"Other provider",apiKeyEnv:"API Key environment variable",invalidApiKeyEnv:"Use letters, numbers, and underscores only, and do not start with a number.",fallbackHelp:"Same-provider fallbacks reuse the primary connection. Other providers use separate provider, API base, and API Key settings.",fallbackIgnored:"Empty, duplicate, or primary-model entries will be ignored.",provider:"Provider",invalidApiBase:"Enter a valid http:// or https:// URL.",liteLlmProviders:"LiteLLM providers",apiKeyPlaceholder:"Enter the model API Key",available:"Available",retiring:"Retiring soon",notActivated:"Not activated",unavailable:"Unavailable",apiKeyLoadError:"Failed to load Ark API Keys",loadingApiKeys:"Loading API Keys…",selectApiKey:"Select an API Key",currentApiKey:"Current API Key",apiKeyList:"API Key list",searchApiKey:"Search API Keys",searchApiKeyName:"Search API Key names",noApiKeys:"No API Keys available",noMatchingApiKey:"No matching API Keys",loading:"Loading models…",loaded:"{{count}} models loaded",loadError:"Failed to load models",selectModel:"Select a model",selectProviderModel:"Select a provider model",providerModels:"Provider models",search:"Search models",searchPlaceholder:"Search by name, Model ID, or provider",noMatches:"No matching models",empty:"No models available",unknownStatus:"Unknown status",refresh:"Refresh",refreshing:"Refreshing…",activate:"Activate",activateAction:"Open activation",currentConfiguration:"Current configuration"},tools:{builtIn:"Built-in tools",builtInHelp:"Select VeADK capabilities. Imports and required environment variables are added automatically.",codeExecution:"Code execution configuration",codeExecutionHelp:"Select the AgentKit code execution sandbox.",mcp:"MCP tools"},catalog:{web_search:{label:"Web search",description:"Get real-time information with Volcengine Web Search."},parallel_web_search:{label:"Parallel web search",description:"Run multiple search queries in parallel and combine the results faster."},link_reader:{label:"Link reader",description:"Fetch and read the main content from a URL."},web_scraper:{label:"Web scraper",description:"Crawl webpages into structured data. Requires the Scraper service."},image_generate:{label:"Image generation",description:"Generate images from text with Doubao Seedream."},image_edit:{label:"Image editing",description:"Edit or transform images with Doubao SeedEdit."},video_generate:{label:"Video generation",description:"Generate videos from text or images with Doubao Seedance, including task status queries."},text_to_speech:{label:"Text to speech (TTS)",description:"Convert text to speech with Volcengine Speech."},run_code:{label:"Code execution",description:"Run code in a sandbox."},vesearch:{label:"VeSearch",description:"Search with Volcengine VeSearch. Requires a bot endpoint."},links:{console:"Console",documentation:"Documentation"},env:{modelAgentName:{comment:"Model name"},embeddingModelName:{comment:"Embedding model required by memory and knowledge bases"},vikingMemoryProject:{comment:"VikingDB memory project"},vikingMemoryRegion:{comment:"VikingDB memory region"},vikingMemoryType:{comment:"Memory types"},feishuAppId:{comment:"Feishu app ID"},feishuAppSecret:{comment:"Feishu app secret",placeholder:"Enter the app secret"},registrySpaceId:{comment:"AgentKit agent center",placeholder:"Select an agent center"},registryTopK:{comment:"Number of agents to retrieve"},registryRegion:{comment:"AgentKit agent center region"},registryEndpoint:{comment:"AgentKit agent center OpenAPI endpoint"},agentKitToolId:{comment:"Code execution sandbox ID"},agentKitToolRegion:{comment:"AgentKit Tools region"},openVikingUrl:{comment:"OpenViking service URL"},openVikingMemoryUserId:{comment:"Memory owner ID",help:"The user segment in viking://user//peers//memories. Use it to isolate agents, tenants, or business scenarios. The default is default."},openVikingMemoryPolicy:{comment:"Memory policy",help:"Controls memory extraction and isolation. Leave it blank to use the official default policy."},openVikingKnowledgeUserId:{comment:"Knowledge base owner ID",help:"Used in the default path viking://user//resources// when no resource directory is configured. The default is default."},openVikingTargetUri:{comment:"Knowledge base resource directory",help:"Leave blank to generate it from the KnowledgeBase index. When provided, this OpenViking resource directory takes precedence."},tlsServiceName:{comment:"TLS topic_id. Leave blank to create one automatically"}}},backends:{shortTerm:{local:{label:"In-memory",description:"Stored in the process without persistence. Best for development and debugging."},sqlite:{label:"SQLite file",description:"Persist data to a local .db file."},mysql:{label:"MySQL",description:"Persist data to MySQL."},postgresql:{label:"PostgreSQL",description:"Persist data to PostgreSQL."}},longTerm:{local:{label:"Local vector store",description:"In-process llama-index vector store."},opensearch:{label:"OpenSearch",description:"Vector retrieval with OpenSearch."},redis:{label:"Redis",description:"Vector retrieval with Redis."},viking:{label:"VikingDB Memory",description:"VikingDB memory with user profile support."},openviking:{label:"OpenViking Memory",description:"Long-term memory that stores and retrieves preferences, events, and entities per user."},mem0:{label:"Mem0",description:"Managed memory from Mem0."}},knowledge:{viking:{label:"VikingDB Knowledge",description:"VikingDB knowledge base."},opensearch:{label:"OpenSearch",description:"Vector retrieval with OpenSearch."},context_search:{label:"Context Search",description:"Volcengine Context Search without embedding configuration."},openviking:{label:"OpenViking Knowledge",description:"OpenViking resource-directory knowledge base without embedding configuration."}}},exporters:{apmplus:{label:"APMPlus",description:"Volcengine APMPlus application performance monitoring."},cozeloop:{label:"CozeLoop",description:"Distributed tracing with CozeLoop."},tls:{label:"TLS (Log Service)",description:"Export logs to Volcengine TLS."}},knowledge:{title:"Knowledge base",description:"Enable external knowledge retrieval (RAG) so the agent can answer from your data.",backend:"Knowledge base backend",vikingDatabase:"VikingDB knowledge base"},memory:{shortTerm:"Short-term memory",shortTermDescription:"Store context for one session",shortTermBackend:"Short-term memory backend",longTerm:"Long-term memory",longTermDescription:"Store context across sessions, usually with vector retrieval",longTermBackend:"Long-term memory backend",vikingDatabase:"VikingDB memory",autoSave:"Save sessions to long-term memory automatically",autoSaveDescription:"Write session content to long-term memory when a session ends."},mcp:{removeTool:"Remove MCP tool",namePlaceholder:"Name (optional)",urlPlaceholder:"MCP service URL",pathWarning:"This is a gateway root address. Use it only when the root path is the MCP endpoint; otherwise include the complete service path.",tokenPlaceholder:"Bearer token (optional)",showToken:"Show Bearer token",hideToken:"Hide Bearer token",commandPlaceholder:"Command, such as npx",argsPlaceholder:"Arguments separated by spaces",stdioHint:"The stdio tool starts in the deployment environment. Make sure its command and dependencies are available.",addTool:"Add MCP tool"},resources:{unnamedAgentCenter:"Unnamed agent center",unnamedKnowledgeBase:"Unnamed knowledge base",unnamedMemory:"Unnamed memory store",loadError:"Failed to load",loadingAgentCenters:"Loading agent centers…",agentCentersLoaded:"{{count}} agent centers loaded",noAgentCenters:"No agent centers available",noMatchingAgentCenters:"No matching agent centers",searchAgentKitCenter:"Search AgentKit agent centers",searchNameOrId:"Search by name or ID",selectAgentCenter:"Select an agent center",selectAgentKitCenter:"Select an AgentKit agent center",selectedAgentCenter:"Selected agent center",agentKitCenter:"AgentKit agent center",refreshAgentCenters:"Refresh agent centers",knowledgeBaseList:"Knowledge base list",knowledgeBasePlaceholder:"Select a knowledge base",loadingKnowledgeBases:"Loading knowledge bases…",knowledgeBasesLoaded:"{{count}} knowledge bases loaded",noKnowledgeBases:"No knowledge bases available",noMatchingKnowledgeBases:"No matching knowledge bases",searchKnowledgeBase:"Search knowledge bases",selectKnowledgeBase:"Select a knowledge base",refreshKnowledgeBases:"Refresh knowledge bases",memoryList:"Memory store list",memoryPlaceholder:"Select a memory store",loadingMemories:"Loading memory stores…",memoriesLoaded:"{{count}} memory stores loaded",noMemories:"No memory stores available",noMatchingMemories:"No matching memory stores",searchMemory:"Search memory stores",selectMemory:"Select a memory store",refreshMemories:"Refresh memory stores"},env:{noAdditionalParameters:"This backend needs no additional runtime parameters.",invalidJson:"Enter valid JSON.",helpAriaLabel:"Help for {{label}}: {{help}}",openOpenViking:"Open OpenViking {{label}}",valuePlaceholder:"Enter a value",openVikingIndex:"OpenViking resource index",openVikingIndexHelp:"Leave blank to generate an index from the agent name, such as my_agent_kb. Without DATABASE_OPENVIKING_TARGET_URI, the default URI is viking://user/{knowledge base owner ID, or default}/resources/{resource index}/. When DATABASE_OPENVIKING_TARGET_URI is set, that complete URI is used instead.",openVikingIndexAriaLabel:"OpenViking resource index help: {{help}}"},deployment:{vpcRequired:"Enter a VPC ID when using VPC networking.",apiKeyRequired:"Select the API Key used by the model.",invalidEnvName:"Invalid environment variable name: {{key}}",requiredEnv:"{{name}}: enter this required environment variable",generatingConfiguration:"Generating deployment configuration",runtimeNameExists:"This Runtime name already exists. Choose another name and try again.",preparing:"Preparing deployment",complete:"Deployment complete",failed:"Deployment failed",updateAndPublish:"Update and publish",stages:{build:"Build image",deploy:"Deploy Runtime",publish:"Publish service",running:"Deploying"}},publish:{generating:"Generating publish configuration",validating:"Validating the agent structure and preparing the deployment snapshot…"}},zue={presets:{support:{name:"Customer support assistant",description:"Answer questions around the clock using your knowledge base and conversation history, with consistent and considerate responses.",instruction:"You are a professional and patient customer support assistant. Always use a courteous, friendly tone. Base answers on the knowledge base whenever possible. When the available information is insufficient, say so clearly and ask for the details you need instead of inventing an answer. Keep responses concise and well structured, and provide steps when useful.",subagents:{}},analyst:{name:"Data analyst",description:"Run code for statistics and visualization with tracing enabled, so every analysis is observable and reproducible.",instruction:"You are a rigorous data analyst. Clarify the objective and definitions before cleaning, analyzing, and visualizing data with executable code. Explain assumptions and methods at each step, support conclusions with key evidence, and identify possible bias or limitations.",subagents:{}},translator:{name:"Translation assistant",description:"Translate between Chinese and English accurately and naturally while preserving tone and terminology.",instruction:"You are a professional translator fluent in Chinese and English. Preserve the meaning of the source while producing natural language for the target audience. Keep proper nouns and technical terminology accurate and reflect the original tone and style. Return only the translation unless the user asks for an explanation.",subagents:{}},coder:{name:"Coding assistant",description:"Write, debug, and refactor code, validate it by running tests, and produce clear, maintainable implementations.",instruction:"You are a senior software engineer. Write correct, clear, maintainable code that follows the conventions and best practices of the target language. When uncertain, run the code to validate the implementation, cover important edge cases, and add concise comments for complex logic.",subagents:{}},researcher:{name:"Researcher",description:"Search primary sources online and combine them with knowledge and long-term memory to produce evidence-backed findings.",instruction:"You are a rigorous researcher. Break each question into key subproblems, collect multiple credible primary sources through web search, and cross-check the evidence before drawing conclusions. Cite sources, state uncertainty, distinguish facts from inference, and avoid overgeneralization.",subagents:{}},"research-team":{name:"Multi-agent research team",description:"Coordinate a researcher, analyst, and writer to produce an end-to-end research report.",instruction:"You coordinate a research team. Break down the user's research task, delegate search, analysis, and writing to the appropriate subagents, synthesize their work, and deliver a clear, evidence-backed report.",subagents:{0:{name:"Researcher",description:"Collect primary sources and data related to the topic online.",instruction:"You are the team's researcher. Find multiple credible sources about the topic, organize the key facts, data, and original citations, and hand them to the analyst without adding unsupported conclusions."},1:{name:"Analyst",description:"Cross-check and synthesize the collected material.",instruction:"You are the team's analyst. Cross-check, compare, and synthesize the research material. Extract insights, identify contradictions and uncertainty, and produce a structured set of findings."},2:{name:"Writer",description:"Turn the analysis into a clear report with reliable citations.",instruction:"You are the team's writer. Turn the analyst's findings into a clear, well-written report with consistent citations, ensuring every conclusion can be traced to a source."}}}},tags:{tools:"Tools",memory:"Memory",knowledgeBase:"Knowledge base",tracing:"Tracing",subagents:"{{count}} subagents"},gallery:{title:"Create from a template",subtitle:"Choose a prebuilt agent template and customize it to fit your needs."},detail:{back:"Back to templates",name:"Name",systemPrompt:"System prompt",model:"Model",tools:"Tools",memory:"Memory",knowledgeBase:"Knowledge base",tracing:"Tracing",subagents:"Subagents ({{count}})",create:"Create from this template",shortTermMemory:"Short-term",longTermMemory:"Long-term"}},Vue={checkingExpiry:"Checking expiry",waitingRecovery:"Waiting for recovery",listFailed:"Could not load projects",recoveryFailed:"Could not restore the workspace. Try again",operationFailed:"Project operation failed. Try again",title:"Code projects",back:"Back to code projects",restart:"This development environment will restart in {{countdown}}. Save your work regularly",expiresAt:"Expires at {{date}}",exitFullscreen:"Exit full screen",fullscreen:"Full screen",exitFullscreenHint:"Exit full screen (Esc)",recovering:"Restoring your workspace. Your project will reopen automatically",retry:"Retry connection",search:"Search code projects",newTitle:"New code project",new:"New project",readingStats:"Loading project details",createdAt:"Created",opening:"Opening",unknownCreatedAt:"Creation time unknown",open:"Open project",empty:"No matching code projects",close:"Close new project",name:"Project name",placeholder:"e.g. my-agent",nameHelp:"Start with a letter and use letters, numbers, underscores or hyphens, up to 64 characters",cancel:"Cancel",create:"Create project",files_one:"{{count}} file",files_other:"{{count}} files",directories_one:"{{count}} directory",directories_other:"{{count}} directories",separator:", "},Hue={enabled:"Enabled",disabled:"Disabled",unknownStatus:"Unknown status",allPermissions:"All permissions",customPermissions:"Custom permissions",unknownPermissions:"Unknown permissions",unnamed:"Unnamed API Key",search:"Search name, status or permissions",noMatches:"No matching API Keys",noModelPermission:"Not permitted by this API Key",modelAvailable:"Available",permissionState:{Available:"Available for chat",Shutdown:"Shut down",VideoGeneration:"Video generation model",Unsupported:"Not a chat model",NotActivated:"Not activated",Unknown:"Model status unavailable"}},que={common:Tue,yaml:Aue,validation:_ue,defaults:jue,helpers:Nue,intelligentDeployment:Rue,codePackage:Iue,buildCanvas:Pue,intelligent:Due,projectLibrary:Mue,modePicker:Lue,promptEditor:$ue,skills:Fue,workflow:Bue,workbench:Uue,traditional:Que,template:zue,workspace:Vue,modelApiKey:Hue},OUe=Object.freeze(Object.defineProperty({__proto__:null,buildCanvas:Pue,codePackage:Iue,common:Tue,default:que,defaults:jue,helpers:Nue,intelligent:Due,intelligentDeployment:Rue,modePicker:Lue,modelApiKey:Hue,projectLibrary:Mue,promptEditor:$ue,skills:Fue,template:zue,traditional:Que,validation:_ue,workbench:Uue,workflow:Bue,workspace:Vue,yaml:Aue},Symbol.toStringTag,{value:"Module"})),Wue={backToList:"Back to scheduled tasks",cancel:"Cancel",cancelQueue:"Cancel queued run",cancelQueueFirst:"Cancel the queued run first",cancelling:"Cancelling…",closeDrawer:"Close panel",collapse:"Collapse",connectingRuntime:"Connecting to Runtime…",createScheduledTask:"Create scheduled task",createTask:"Create task",delete:"Delete",deleteTask:"Delete task",edit:"Edit",enable:"Enable",expand:"Expand",pause:"Pause",refresh:"Refresh",refreshHistory:"Refresh run history",rerun:"Run again",retry:"Retry",runNow:"Run now",saveChanges:"Save changes",saving:"Saving…",stop:"Stop run",stopRun:"Stop this run",stopRunFirst:"Stop the current run first",stopping:"Stopping…",viewDetails:"View details"},Kue={cancelDescription:"This Session will be cancelled. Future scheduled runs will remain enabled.",cancelTitle:"Stop this run?",deleteDescription:"“{{name}}” and its complete run history will be permanently deleted.",deleteTitle:"Delete scheduled task?"},Gue={configuration:"Task configuration",nextRun:"Next run",pageLabel:"Scheduled task details",region:"Region",runtime:"Runtime",status:"Task status"},Xue={createTitle:"Create scheduled task",description:"Each trigger creates a separate Session for the Runtime Agent.",editTitle:"Edit scheduled task"},Yue={minutesSeconds:"{{minutes}} min {{seconds}} sec",seconds:"{{count}} sec"},Zue={cronExpression:"Cron expression",cronHelp:"Enter minute, hour, day of month, month, and day of week.",dailyTime:"Daily run time",enableAfterCreate:"Enable after creation",enableHelp:"The task will run at its next scheduled time after it is enabled.",name:"Task name",namePlaceholder:"For example: Generate a daily operations summary",noRuntime:"No Runtime available",prompt:"Execution prompt",promptPlaceholder:"Enter the text to send to the Agent on every run",runAt:"Run time",runtimeAgent:"Runtime Agent",runtimeHelp:"The task always uses the Runtime's currently active version.",runtimePlaceholder:"Select a Runtime Agent",schedule:"Schedule",scheduleType:"Schedule type",timezone:"Time zone",weekday:"Day of week"},Jue={all:"All"},ede={description:"Each run uses a separate Session. Results and errors are retained.",duration:"Duration: {{duration}}",emptyDescription:"Runs will appear here after the task is triggered or run manually.",emptyTitle:"No runs yet",errorDetails:"Error details",finalAnswer:"Final answer",loadFailed:"Unable to load run history",loadFailedDescription:"Check the Studio service and try again.",session:"Session",title:"Run history"},tde={cancelRequested:"Stop request submitted.",created:"Task created.",deleted:"The task and its run history were deleted.",enabled:"Task enabled.",paused:"Task paused.",queued:"Task queued and will start within one minute.",requeued:"Task queued again and will start within one minute.",updated:"Task updated."},nde={filterLabel:"Filter scheduled tasks by status",listLabel:"Scheduled task list",loadFailed:"Unable to load scheduled tasks",loadFailedDescription:"Check the Studio service and try again.",title:"Cronjob"},ide={cron:"Cron {{cron}}{{zone}}",daily:"Daily at {{time}}{{zone}}",once:"Once · {{date}}{{zone}}",weekly:"{{weekday}} at {{time}}{{zone}}"},rde={daily:"Daily",once:"Once",weekly:"Weekly"},sde={cancelled:"Cancelled",enabled:"Enabled",failed:"Failed",notRun:"Not run yet",paused:"Paused",pending:"Preparing",queued:"Queued",retrying:"Retrying",running:"Running",skipped:"Skipped",success:"Succeeded"},ode={cronFields:"A Cron expression must contain five fields, for example 0 9 * * *.",nameRequired:"Enter a task name.",promptRequired:"Enter the text to send to the Agent on each run.",runtimeAppMissing:"The Runtime Agent did not return an appName. Confirm that the Runtime is ready and compatible.",runtimeRequired:"Select an available Runtime Agent.",timeRequired:"Select a run time."},ade={friday:"Friday",monday:"Monday",saturday:"Saturday",sunday:"Sunday",thursday:"Thursday",tuesday:"Tuesday",wednesday:"Wednesday"},kUe={actions:Wue,confirm:Kue,detail:Gue,drawer:Xue,duration:Yue,fields:Zue,filters:Jue,history:ede,notices:tde,page:nde,schedule:ide,scheduleTypes:rde,status:sde,validation:ode,weekdays:ade},SUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Wue,confirm:Kue,default:kUe,detail:Gue,drawer:Xue,duration:Yue,fields:Zue,filters:Jue,history:ede,notices:tde,page:nde,schedule:ide,scheduleTypes:rde,status:sde,validation:ode,weekdays:ade},Symbol.toStringTag,{value:"Module"})),lde="Quick-create Agent",cde="Agent type",ude="Close",dde="Deploy",fde="Preview",hde="Configuration download started",pde="Download failed — try again",mde="Review {{count}} configuration issues",gde="Custom",bde="Custom {{field}}",yde="Enter a custom value",vde="This model declares no reasoning levels; the service settings apply",xde="Add a model to this provider first",wde="Select a provider first",Ode="Select an option",kde="Optional",Sde="Default model, Agent preset and permissions apply to new sessions. The preset must exist in the deployed Harness",Ede="Enter an environment variable name only; supply its secret value at deployment",Cde="read-only allows reading; workspace-write allows workspace edits; danger-full-access allows full access without approval",Tde="allowedModels lists the models sub-agents may select. Enabling selection requires at least one provider/model pair",Ade="Add a custom model service using its endpoint, protocol and model IDs, including compatible Volcengine and BytePlus services",_de="Covers common native settings. Other plugin parameters and preset files are not included yet",jde="Native configuration reference",Nde="Provider {{index}}",Rde="Model {{index}}",Ide="Add provider",Pde="Remove provider {{index}}",Dde="Add model",Mde="Remove model {{index}}",Lde="Add allowed model",$de="Remove allowed model {{index}}",Fde="Remove",Bde="Enter the service’s model ID",Ude={provider:"Provider {{index}}",model:"Model {{index}}"},Qde={defaults:"Session defaults",deepseek:"DeepSeek model service",providers:"Custom model providers",shell:"Command execution",loop:"Tool calls",subagents:"Sub-agent model selection",search:"DeepSeek web search"},zde={id:"Provider ID",displayName:"Display name",baseURL:"Base URL",api:"API protocol",apiKeyEnv:"API key environment variable"},Vde={id:"e.g. company-models",displayName:"Optional; defaults to the provider ID",baseURL:"https://…/v1",api:"Select a protocol",apiKeyEnv:"e.g. MODEL_API_KEY"},Hde={id:"Model ID",name:"Display name",contextWindow:"Context capacity",maxTokens:"Maximum output capacity"},qde={positive:"Enter a number greater than zero",integer:"Enter a valid positive integer",env:"Use letters, digits and underscores; do not start with a digit",url:"Enter an HTTP or HTTPS URL without credentials",option:"Select a supported native option",required:"Complete this field",duplicate:"This ID or model pair already exists",providerId:"Start with a lowercase letter; use lowercase letters, digits, dots, underscores or hyphens; reserved IDs are unavailable",routes:"Add at least one complete provider/model pair",modelPair:"Enter a model ID for this custom provider",unknownProvider:"Add this custom provider first",unknownModel:"Enter a model ID configured for this provider",timer:"Enter a timeout greater than 0 and no more than 2147483647 ms"},Wde={"agent-default-model_provider":"Default provider","agent-default-model_model":"Default model","agent-default-model_reasoningEffort":"Default reasoning effort","agent-presets_default":"Default Agent preset",permission_defaultPreset:"Default permission preset","llm-deepseek_apiKeyEnv":"API key environment variable","llm-deepseek_baseURL":"Base URL","llm-deepseek_thinking":"Thinking mode","llm-deepseek_reasoningEffort":"Reasoning effort","llm-deepseek_maxTokens":"Output limit per request","llm-deepseek_defaultContextWindow":"Default context capacity","llm-deepseek_streamIdleTimeoutMs":"Stream idle timeout (ms)",bash_timeoutMs:"Default execution timeout (ms)",bash_maxTimeoutMs:"Maximum execution timeout (ms)",bash_maxOutputBytes:"Output limit (bytes)","agent-loop_maxParallelToolCalls":"Parallel tool-call limit","subagent-model-selection_enabled":"Enable model selection","web-search-deepseek_apiKeyEnv":"API key environment variable","web-search-deepseek_baseURL":"Search base URL","web-search-deepseek_model":"Search model","web-search-deepseek_apiVersion":"API version","web-search-deepseek_maxTokens":"Search output limit","web-search-deepseek_maxUses":"Maximum search uses"},Kde="Cancel",Gde="Back to creation methods",Xde="DeepSeek Harness configuration",EUe={title:lde,agentType:cde,close:ude,continue:"Continue",deploy:dde,preview:fde,export:"Export configuration",downloaded:hde,downloadFailed:pde,validationSummary:mde,customValue:gde,customField:bde,enterCustomValue:yde,reasoningUnavailable:vde,modelsUnavailable:xde,selectProviderFirst:wde,selectOption:Ode,optional:kde,defaultsHelp:Sde,credentialHelp:Ede,permissionHelp:Cde,routesHelp:Tde,providersHelp:Ade,coverage:_de,source:jde,provider:Nde,model:Rde,addProvider:Ide,removeProvider:Pde,addModel:Dde,removeModel:Mde,addRoute:Lde,removeRoute:$de,remove:Fde,modelIdPlaceholder:Bde,route:Ude,sections:Qde,providerFields:zde,providerPlaceholders:Vde,modelFields:Hde,errors:qde,fields:Wde,cancel:Kde,back:Gde,pageTitle:Xde},CUe=Object.freeze(Object.defineProperty({__proto__:null,addModel:Dde,addProvider:Ide,addRoute:Lde,agentType:cde,back:Gde,cancel:Kde,close:ude,coverage:_de,credentialHelp:Ede,customField:bde,customValue:gde,default:EUe,defaultsHelp:Sde,deploy:dde,downloadFailed:pde,downloaded:hde,enterCustomValue:yde,errors:qde,fields:Wde,model:Rde,modelFields:Hde,modelIdPlaceholder:Bde,modelsUnavailable:xde,optional:kde,pageTitle:Xde,permissionHelp:Cde,preview:fde,provider:Nde,providerFields:zde,providerPlaceholders:Vde,providersHelp:Ade,reasoningUnavailable:vde,remove:Fde,removeModel:Mde,removeProvider:Pde,removeRoute:$de,route:Ude,routesHelp:Tde,sections:Qde,selectOption:Ode,selectProviderFirst:wde,source:jde,title:lde,validationSummary:mde},Symbol.toStringTag,{value:"Module"})),Yde="Report an issue",Zde="Description",Jde="Common issues",efe="Cancel",tfe="Done",nfe="Submit feedback",ife="Submitting…",rfe={title:"Feedback submitted. Thank you.",description:"The AgentKit team will review your report as soon as possible."},sfe={close:"Close issue report",intro:"Select the issues you encountered and add any useful details.",privacy:"Your conversation data will be shared with the AgentKit team. Please protect sensitive information.",descriptionPlaceholder:"Describe what happened (optional)",issues:{slow:"Slow execution",crash:"Runtime crash",incorrect:"Inaccurate result",tool_error:"Tool call failed",other:"Other issue"}},ofe={description:"Tell us about a problem you encountered while using AgentKit Studio.",module:"Area",modules:{conversation:"Conversation",agents:"Agents",applications:"Automations",search:"Search",other:"Other"},commonIssuesMultiple:"Common issues (select all that apply)",issueTypes:"Issue types",issues:{page_slow:"Page loads slowly",feature_unavailable:"Feature unavailable",display_error:"Display issue",no_response:"Action has no response",other:"Other issue"},descriptionPlaceholder:"Describe the page, action, and what happened",quickAdd:"Quick add",suggestionsLabel:"Suggested descriptions",suggestions:{noResponse:"Nothing happens after I click",loading:"The page remains in a loading state",incomplete:"Some content is missing or clipped",error:"An error appears after the action"},privacy:"Your data will be shared with the AgentKit team. Please protect sensitive information."},TUe={title:Yde,descriptionLabel:Zde,commonIssues:Jde,cancel:efe,done:tfe,submit:nfe,submitting:ife,success:rfe,dialog:sfe,page:ofe},AUe=Object.freeze(Object.defineProperty({__proto__:null,cancel:efe,commonIssues:Jde,default:TUe,descriptionLabel:Zde,dialog:sfe,done:tfe,page:ofe,submit:nfe,submitting:ife,success:rfe,title:Yde},Symbol.toStringTag,{value:"Module"})),afe={back:"Back",close:"Close"},lfe={title:"Optimize migrated project",closeAria:"Close optimization dialog"},cfe={title:"Migrated projects",description:"Manage migrated source versions or continue optimizing any version.",libraryTitle:"Projects and versions",libraryDescription:"View, download, deploy, or compare source versions, or continue optimizing any version.",emptyTitle:"No migrated projects yet",emptyDescription:"Migrated source code will be saved here automatically."},ufe={langchain:"LangChain",langgraph:"LangGraph",adk:"Google ADK",strands:"Strands",agentcore:"AgentCore",dify:"Dify",any:"Any (universal migration)"},dfe={awaitingUpload:"Awaiting upload",analyzing:"Analyzing",needsInput:"Needs input",analysisReady:"Awaiting confirmation",migrating:"Migrating",validating:"Validating",packaging:"Packaging",succeeded:"Completed",succeededWithWarnings:"Completed with notices",partial:"Partially completed",failed:"Failed",cancelled:"Stopped",expired:"Expired"},ffe={evaluationPending:"Evaluation pending",evaluationRunning:"Evaluating",waitingDataset:"Evaluation cases pending",waitingEnvironment:"Environment variables required",evaluationFailed:"Migrated, evaluation incomplete",evaluationBlocked:"Migrated, evaluation needs attention",evaluationCancelled:"Migrated, evaluation cancelled",resultUnavailable:"Result unavailable",environmentExpired:"Environment expired"},hfe={partialReady:"Migration output is ready, but delivery is incomplete. Review the migration notices.",readyWithWarnings:"Migration output is ready. Review the migration notices.",ready:"Migration output is ready."},pfe={passed:"Output verification passed",failed:"Output verification failed",degraded:"Output verification incomplete"},mfe={session:"Create migration environment",upload:"Upload project",analysis:"Analyze project"},gfe={agentNameRequired:"Enter an Agent name",agentNameInvalid:"Agent names must be 1–63 characters, contain only lowercase letters, numbers, and hyphens, and start and end with a letter or number"},bfe={seconds:"{{seconds}} sec",minutesSeconds:"{{minutes}} min {{seconds}} sec"},yfe={savedUnaffected:"Saved projects are unaffected",savingUnaffected:"Source is being saved and will be unaffected once complete",activeDetail:"Task history and temporary output will become unavailable after expiration",oneHour:"Temporary migration environment is retained for 1 hour",ended:"Temporary migration environment has ended",savedAvailable:"Saved projects remain available to view, download, deploy, or optimize",unavailable:"Task history and temporary output are no longer available",countdown:"Temporary migration environment ends in {{minutes}} min {{seconds}} sec",expiredSavedMessage:"The temporary migration environment has ended. Saved projects are unaffected.",expiredMessage:"The temporary migration environment has ended. Task history and temporary output are no longer available."},vfe={recommended:"Recommended migration method",scope:"Migration scope",excluded:"Out of scope",viewEvidence:"View analysis evidence",viewAssumptions:"View key assumptions",viewSourceEvidence:"View source evidence"},xfe={ariaLabel:"Codex activity",title:"Codex activity",startingAnalysis:"Codex is starting the analysis…",startingMigration:"Codex is starting the migration…",loadError:"Codex activity is temporarily unavailable. The current task is unaffected."},wfe={title:"Migration output",fileTooLarge:"This file exceeds 2 MiB. Download the complete output to view it.",unsupportedPreview:"This file cannot be previewed here. Download the complete output to view it.",filesAria:"Migration output files",searchAria:"Search output files",searchPlaceholder:"Search files",limit:"Showing the first {{count}} items. Search for a specific file.",noSelection:"No file selected",noPreview:"No files available to preview.",loadingFile:"Loading output file…",startupFile:"Startup file",fileCountLabel:"Files",saved:"Source has been saved. You can view, download, deploy, or optimize it.",saving:"Output is ready and the source version is being saved.",deployReady:"Output is available to preview, download, and deploy. Waiting for source save status.",deployUnavailable:"Output is available to preview and download, but its current delivery status does not support deployment.",viewProjects:"View migrated projects",downloading:"Downloading…",downloadZip:"Download ZIP",deployTitle:"Deploy migration output",deployUnavailableTitle:"Current delivery status does not support deployment",deployRuntime:"Deploy to Runtime",fileCount:"{{count}} files",startup:"Startup file {{module}}",loading:"Loading migration output…"},Ofe={retiring:"Retiring soon",currentDefault:"Current default model",loadError:"Failed to load models",label:"Model",placeholder:"Select a model"},kfe={zipOnly:"Select a local project in .zip format.",invalidName:"The ZIP file name is invalid. Rename the file and select it again.",tooLarge:"The project ZIP cannot exceed {{size}}.",empty:"The project ZIP cannot be empty.",removeAria:"Remove project ZIP",reselectPrompt:"Select the project ZIP again",selectPrompt:"Select or drop a local project ZIP",reselect:"Select again",selectZip:"Select ZIP",continue:"Continue upload",start:"Upload and analyze",inputAria:"Select a local project ZIP",retention:"The temporary migration environment is retained for 1 hour after creation. Successfully saved source versions are unaffected.",uploading:"Uploading…",sizeHint:"Project ZIP, up to {{size}}"},Sfe={requiredPlaceholder:"Enter {{key}}",optionalPlaceholder:"Optional: {{key}}",notReady:"Migration output is not ready yet.",back:"Back to migration results"},Efe={backToAddAgent:"Back to Add Agent",title:"Migrate existing project",newMigration:"New migration",recent:"Recent migrations",loadingSessions:"Loading migration sessions…",noSessions:"No migration sessions",heading:"Migrate an existing Agent project",intro:"Upload a local project ZIP. Codex will first perform a read-only analysis, then ask you to confirm the migration method.",backToHome:"Migration home",navigation:"Migration navigation",showMore:"Show more",showLess:"Show less",projectName:"Project name",status:"Status",createdAt:"Created",actions:"Actions",openTask:"Open migration {{name}}",continueTask:"Continue",viewTask:"View"},Cfe={stop:"Stop migration",stopping:"Stopping…",cancel:"Cancel",reload:"Reload",refreshStatus:"Refresh status"},Tfe={unavailable:"Migration is currently unavailable",defaultReason:"Dev Sandbox is currently unavailable. Contact your administrator to check the configuration."},Afe={creatingSandbox:"Creating Dev Sandbox",initializing:"Initializing the migration workspace and checking AgentKit CLI, Codex, and migration capabilities. The project will upload automatically when the environment is ready.",elapsed:"Elapsed: {{duration}}",uploadThenAnalyze:"Read-only analysis will start automatically after the ZIP upload completes.",analyzing:"Codex is identifying the framework, entry point, and migration boundaries. No migration changes are being made.",migrationLocked:"Attachments and migration settings cannot be changed while migration is running. Wait for the task to finish or stop it.",analysisPaused:"Read-only analysis is paused. Answer only the questions below. After submission, analysis will continue in the same environment without starting the migration.",analysisComplete:"Read-only analysis is complete. Review the recommendation and confirm the final migration method.",awaitingUpload:"The migration environment is ready. Select the local ZIP again to continue uploading.",expiredTitle:"Migration environment expired",expiredDescription:"Migration content and output can no longer be previewed, downloaded, or deployed. If the Runtime deployment completed, return to the Agents page to continue using it.",unsupportedTitle:"This ZIP cannot be migrated yet",unsupportedHint:"Update the project as instructed, then create a new migration and upload it again.",failedTitle:"Migration incomplete",cancelled:"This migration was stopped. Create a new migration and upload the project again."},_fe={ariaLabel:"Provide project analysis details",title:"Additional information needed for analysis",description:"The attachment stays locked; submitting continues read-only analysis only",submitting:"Continuing analysis…",submit:"Submit and continue analysis"},jfe={ariaLabel:"Confirm migration method",title:"Confirm migration method",description:"Migration starts only after confirmation",framework:"Migration method",frameworkPlaceholder:"Select a migration method",agentName:"Agent name",entry:"Project entry point",entryPlaceholder:"Select a project entry point",entryExample:"For example, agent.py:agent",consent:"By selecting “Confirm and start migration,” you confirm the migration scope, exclusions, and key assumptions above.",starting:"Starting migration…",start:"Confirm and start migration"},Nfe={setup:{title:"Migration effect evaluation",description:"Evaluation cases run automatically after migration.",on:"On",off:"Off",unavailable:"Migration effect evaluation is unavailable in this environment.",casesTitle:"Evaluation cases",casesDescription:"Add at least one case. Expected outcomes and criteria are optional.",configuredSummary:"{{count}} cases · {{preset}} · {{dimensions}}",incompleteSummary:"{{count}} cases need content · {{preset}} · {{dimensions}}",dimensionSummary:"{{count}} dimensions",editSettings:"Edit settings",viewSettings:"View settings",lockedTitle:"Evaluation cases",lockedDescription:"Cases cannot change after upload starts.",closeAria:"Close evaluation settings",done:"Finish setup",close:"Close"},tabs:{label:"Migration task content",migration:"Migration",evaluation:"Evaluation",waitingMigration:"Waiting for migration",waitingConfiguration:"Setup required",running:"Running",completed:"Completed",issue:"Needs attention"},bulk:{open:"Paste multiple",label:"Enter one case per line",placeholder:`Check the status of today's orders
+Summarize the result in three points`,preview:"{{count}} cases will be added",confirm:"Add cases"},case:{title:"Case {{index}}",add:"Add case",moveUp:"Move case {{index}} up",moveDown:"Move case {{index}} down",copy:"Duplicate",delete:"Delete",userInput:"User input",userInputPlaceholder:"For example: Check the status of today's orders",expectedOutcome:"Expected outcome (optional)",expectedOutcomePlaceholder:"Describe what the Agent should accomplish; exact wording is not required",criteria:"Requirements (optional)",addCriterion:"Add requirement",criterionLabel:"Requirement {{index}}",criterionPlaceholder:"For example: Include the order ID and current status",removeCriterion:"Remove requirement {{index}}"},advanced:{title:"Advanced settings",standard:"Standard evaluation",standardDescription:"Uses 3 dimensions by default: semantic fidelity, output constraints, and workflow/tool fidelity.",custom:"Custom dimensions",customDescription:"Select one or more dimensions based on business risk.",lockedDescription:"The evaluation method and dimensions cannot change after upload starts."},dimension:{semantic_fidelity:"Semantic fidelity",output_contract:"Output contract",workflow_tool_fidelity:"Workflow and tool fidelity",context_memory_fidelity:"Context and memory fidelity",boundary_error_fidelity:"Boundary and error fidelity",safety_refusal_fidelity:"Safety and refusal fidelity"},dimensionDescription:{semantic_fidelity:"Checks whether intent, conclusions, and key facts remain consistent.",output_contract:"Checks required fields, structure, language, and formatting constraints.",workflow_tool_fidelity:"Checks observable workflow branches and tool-driven behavior.",context_memory_fidelity:"Checks supported multi-turn context and memory behavior.",boundary_error_fidelity:"Checks invalid input, missing information, and dependency failures.",safety_refusal_fidelity:"Checks existing authorization, refusal, and sensitive-data boundaries."},validation:{caseCount:"Keep between 1 and {{count}} cases.",dimensionRequired:"Select at least one evaluation dimension.",userInputRequired:"Enter case input.",userInputBytes:"A case cannot exceed 32 KiB.",expectedOutcomeBytes:"The expected outcome cannot exceed 16 KiB.",criteriaCount:"A case can contain at most {{count}} requirements.",criterionRequired:"Requirements cannot be empty.",criterionBytes:"One requirement cannot exceed 2 KiB.",datasetBytes:"All evaluation cases cannot exceed 10 MiB."},dataset:{invalidLockResponse:"The service did not confirm that evaluation cases were saved. Try again.",loadingSettings:"Loading evaluation settings…",loadSettingsFailed:"Evaluation settings could not be loaded.",retryLoadSettings:"Reload",missing:"No saved evaluation cases were found. Enter and save them again.",saveWarning:"Evaluation cases were not saved. Migration continues.",retrySave:"Save evaluation cases again",saving:"Saving…"},state:{disabled:"Evaluation is off",waiting_dataset:"Waiting for evaluation cases",pending:"Evaluation starts automatically after migration",preparing:"Preparing the evaluation environment…",waiting_environment:"Runtime environment variables are required",deploying:"Deploying a temporary Runtime…",executing:"Running evaluation cases…",judging:"Running evaluation analysis…",aggregating:"Aggregating evaluation results…",completed:"Evaluation completed",failed:"Evaluation incomplete",blocked:"Evaluation requires attention before it can continue",cancelled:"Evaluation cancelled"},progress:{label:"Migration and migration effect evaluation progress",migration:"Migration",evaluation:"Migration effect evaluation",notStarted:"Not started",inProgress:"In progress",completed:"Complete",waitingConfiguration:"Waiting for setup",issue:"Needs attention"},environment:{description:"Enter the environment variables required by the temporary Runtime.",security:"Used only for this evaluation.",optional:"Optional",submit:"Submit and continue evaluation",submitting:"Submitting…"},execution:{preparing:"Prepare evaluation",preparingDetail:"Validate migration output and {{count}} evaluation cases",deploying:"Start Runtime",deployingDetail:"Prepare {{runtime}}",runtimeFallback:"isolated runtime",executing:"Run cases",executingDetail:"Run {{count}} cases and capture output",judging:"Run evaluation analysis",judgingDetail:"Evaluate {{cases}} cases · {{dimensions}} dimensions",aggregating:"Generate evaluation report",aggregatingDetail:"Aggregate scores and evidence into an HTML report",waiting:"Waiting",running:"Running",failed:"Failed",complete:"Completed"},result:{title:"Execution progress",attempt:"Evaluation attempt {{attempt}}",pending:"Waiting for migration to complete",retry:"Run evaluation again",retrying:"Retrying…",failureStage:"Failed at",errorCode:"Error code",taskId:"Task ID",diagnosticAttempt:"Evaluation attempt",runtime:"Runtime",errorDetails:"Error details",diagnosticField:"{{label}}: {{value}}",diagnosticHeading:"{{label}}:",loadingReport:"Loading the evaluation report…",reportTitle:"HTML evaluation report",reportHtmlDescription:"View or download the HTML report.",viewReport:"View report",reportDrawerDescription:"Scores, differences, and evidence",closeReport:"Close",closeReportAria:"Close evaluation report",reportPreviewTitle:"Migration effect evaluation report preview",reportSummary:"Evaluation summary",reportVersion:"Dataset {{version}} · Prompt v{{prompt}}",downloadReport:"Download full report",downloadingReport:"Downloading…",overallScore:"Overall fidelity",scoreScale:"0–100; N/A when evidence is insufficient",evidenceCoverage:"Evidence coverage",coverageDetail:"{{scored}} of {{total}} dimensions evidenced",executionSuccess:"Execution success",executionDetail:"{{succeeded}} of {{total}} cases completed",naCount:"N/A count",naDescription:"Insufficient evidence; excluded from scores",gapDescription:"Migration gap summary",lowestScoringCases:"Lowest-scoring cases",executionFailures:"Execution issues",criticalEvidence:"Critical evidence",limitations:"Evaluation limitations",viewEvidence:"View results and evidence for {{count}} cases",outputTruncated:"Long output was truncated",executionState:{succeeded:"Execution completed",failed:"Execution issue"},severityLabel:"Severity: {{severity}}",severity:{none:"None",low:"Low",medium:"Medium",high:"High",critical:"Critical",unknown:"Unknown"},evidenceSource:{user_reference:"Expected outcome",user_criteria:"Provided requirements",source_contract:"Source contract",observed_output:"Observed output",runtime_observation:"Raw Runtime data",deterministic_assertion:"Deterministic assertion"},listSeparator:", "}},Rfe={closeAria:"Dismiss error",loadFailed:"Could not load migration data. Try again.",refreshFailed:"Could not refresh the migration status. Try again."},Ife={title:"Stop the current migration?",description:"Stopping ends the current analysis or migration process. Completed steps will not continue."},_Ue={common:afe,optimization:lfe,projects:cfe,framework:ufe,state:dfe,historyStatus:ffe,task:hfe,verification:pfe,transfer:mfe,validation:gfe,duration:bfe,expiry:yfe,analysis:vfe,activity:xfe,artifact:wfe,model:Ofe,upload:kfe,deployment:Sfe,workspace:Efe,actions:Cfe,capability:Tfe,conversation:Afe,questions:_fe,confirmation:jfe,evaluation:Nfe,errors:Rfe,stopDialog:Ife},jUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Cfe,activity:xfe,analysis:vfe,artifact:wfe,capability:Tfe,common:afe,confirmation:jfe,conversation:Afe,default:_Ue,deployment:Sfe,duration:bfe,errors:Rfe,evaluation:Nfe,expiry:yfe,framework:ufe,historyStatus:ffe,model:Ofe,optimization:lfe,projects:cfe,questions:_fe,state:dfe,stopDialog:Ife,task:hfe,transfer:mfe,upload:kfe,validation:gfe,verification:pfe,workspace:Efe},Symbol.toStringTag,{value:"Module"})),Pfe={loading:"Loading…",searchLabel:"Search {{label}}",searchPlaceholder:"Search {{label}}",retry:"Retry",noMatches:"No matches",noOptions:"No options available",selection:"{{label}}: {{value}}"},Dfe={badge:"All new",view:"See what's new",title:"What's new",defaultNotes:{multiRegion:"Multi-region agents: load Beijing and Shanghai Runtimes in parallel, with more available as you scroll.",switchAgent:"Switch in conversation: choose an agent beside the composer and start a new conversation immediately.",visualCanvas:"Visual execution canvas: inspect multi-agent structures on a horizontal canvas with fullscreen support."}},Mfe={label:"New conversation workspace",agent:"Agent",skill:"Skill customization",video:"Video creation"},Lfe={select:"Select conversation mode",agent:{label:"Agent",description:"Chat with the selected Agent"},builtin:{label:"Built-in Agent",description:"Use an Agent provided by the platform"},codex:{label:"Codex Agent",description:"Run tasks in a sandbox"},deepseekHarness:{label:"DeepSeek Harness",description:"Open the DeepSeek Harness workspace"},arkClaw:"ArkClaw",hermes:"Hermes Agent",checking:"Checking configuration",notConfigured:"Not configured by an administrator",unavailable:"Unavailable"},$fe={select:"Select Agent",typesLabel:"Agent types",listLabel:"{{type}} list",types:{agent:"Agent",general:"General Agent",codex:"Codex Agent",deepseekHarness:"DeepSeek Harness",openclaw:"OpenClaw Agent",hermes:"Hermes Agent"},loading:"Loading Agents",reload:"Reload",empty:"No {{type}} yet",emptyLocal:"No local Agents yet",emptyGeneral:"No General Agents yet",createHint:"Create one from the Agents page",localHint:"Check the directory where Studio was started",waking:"Waking up",opening:"Opening",connecting:"Connecting",loadingMore:"Loading",loadMore:"Load more",runtimeTimeout:"Loading Agents timed out after 15 seconds. Check the network or Runtime service and retry.",loadGeneral:"Load General Agents",loadType:"Load {{type}}",connectGeneral:"Connect to General Agent",openLocal:"Open local Agent",openType:"Open {{type}}",wakingHint:"Waking the agent. This may take some time."},Ffe={spaceAria:"Skill spaces",configuration:"Skill customization settings",actions:{create:"Generate Skill",optimize:"Optimize Skill"},selectAction:"Select a Skill customization action",actionList:"Skill customization actions",style:"Style",selectStyle:"Select style",model:"Model",selectModel:"Select model",styles:{concise:"Concise and practical",strict:"Rigorous and reliable",tutorial:"Tutorial-friendly",automation:"Automation-first"},modelLoadFailed:"Failed to load model configuration",spaceLoadFailed:"Failed to load Skill Spaces",skillLoadFailed:"Failed to load Skills",unnamedSpace:"Unnamed Skill Space",space:"Skill Space",select:"Select Skill",selectAria:"Select Skill: {{skill}}",loadingSpaces:"Loading Skill Spaces",reload:"Reload",emptySpaces:"No Skill Spaces yet",skillList:"{{space}} Skill list",loadingSkills:"Loading Skills",emptySkills:"No Skills yet"},Bfe={modes:{auto:"Auto detect",text_to_video:"Text to video",reference_to_video:"Reference to video",video_editing:"Video editing",video_extension:"Video extension",first_last_frame:"First and last frames"},taskNames:{auto:"Video generation",text_to_video:"Text-to-video",reference_to_video:"Reference-to-video",video_editing:"Video editing",video_extension:"Video extension",first_last_frame:"First-and-last-frame generation"},controls:{label:"Video creation settings",aspectRatio:"Aspect ratio",selectAspectRatio:"Select aspect ratio",resolution:"Resolution",selectResolution:"Select resolution",duration:"Duration",durationShort:"{{count}}s",durationAria:"Video duration: {{count}} seconds",lastFrame:"Last frame",lastFrameHelper:"Add the video's ending frame",assistImage:"Supporting image",referenceImage:"Reference image",assistImageHelper:"Add visual guidance",imageHelper:"Supports common image formats",referenceVideo:"Reference video",videoHelper:"Supports common video formats",optional:"Optional",replace:"Replace",add:"Add",upload:"Upload {{label}}",replaceFile:"Replace {{label}}: {{name}}",removeFile:"Remove {{label}} {{name}}",storageUnavailable:"Persistent storage is not configured",loadingEnhancer:"Loading prompt enhancement model",enhancerHint:"Uses {{model}} for intent recognition and prompt enhancement",enhancerUnavailable:"Prompt enhancement model unavailable"},task:{title:"Video generation task",closeAria:"Close video generation task dialog",progressAria:"Video generation progress",optimizedPrompt:"Optimized prompt",processingAria:"{{task}} progress",waitingAria:"{{status}}, elapsed {{elapsed}}",elapsed:"Elapsed {{elapsed}}",previewAria:"Generated video preview",close:"Close",download:"Download video",retryOptimization:"Retry prompt optimization",retryGeneration:"Retry video generation",providerQueued:"Waiting for model scheduling",providerRunning:"Model generating",providerSubmitting:"Submitting task",queuedHint:"The task was submitted. Its status will update automatically when processing begins.",runningHint:"This may take several minutes. The video preview will appear here when complete.",backgroundHint:"You can close this dialog. The task will continue in the background.",successHint:"Your video is ready to preview or download.",activationHint:"Activate the service in the model console, then retry generation.",retryHint:"Fix the issue and retry the current step.",steps:{optimizationFailed:"Prompt optimization failed",optimizationDone:"Prompt optimization complete",optimizationActive:"Optimizing prompt",generationDone:"{{task}} complete",generationFailed:"{{task}} failed",generationQueued:"{{task}} queued",generationRunning:"Generating {{task}}",generationActive:"{{task}} in progress",generationPending:"Waiting for video generation",generationComplete:"Video generation complete"},elapsedHours:"{{hours}}h {{minutes}}m",elapsedMinutes:"{{minutes}}m {{seconds}}s",elapsedSeconds:"{{seconds}}s"}},Ufe={compactSelect:Pfe,featureNotice:Dfe,workspace:Mfe,mode:Lfe,agentPicker:$fe,skill:Ffe,video:Bfe},NUe=Object.freeze(Object.defineProperty({__proto__:null,agentPicker:$fe,compactSelect:Pfe,default:Ufe,featureNotice:Dfe,mode:Lfe,skill:Ffe,video:Bfe,workspace:Mfe},Symbol.toStringTag,{value:"Module"})),Qfe="Review center",zfe="Resource type to review",Vfe="Only administrators can access the review center",Hfe="Search name, submitter or version",qfe="Review status",Wfe="Pending: {{count}}",Kfe="Requests: {{count}}",Gfe={skill:"Skills",agent:"Agents"},Xfe={all:"All statuses",pending:"Pending",approved:"Approved",returned:"Returned",approving:"Publishing"},Yfe={application:"Request",submitter:"Submitter",version:"Version",submittedAt:"Submitted at",status:"Status",actions:"Actions"},Zfe={details:"Details",detailsFor:"View request for {{name}}",approve:"Approve",approveFor:"Approve request for {{name}}",return:"Return",returnFor:"Return request for {{name}}",close:"Close",backToDetails:"Back to details",confirmApprove:"Confirm approval",confirmReturn:"Confirm return",clearFilters:"Clear filters",refresh:"Refresh",cancel:"Cancel",resumeApproval:"Resume publishing"},Jfe={title:"No review requests yet",description:"Submitted review requests will appear here",filteredTitle:"No matching requests",filteredDescription:"Try another search or change the review status"},ehe={title:"Request details",sections:"Request detail sections",overview:"Overview",files:"Submitted files · {{count}}",requestType:"Request type",update:"Version update",firstRelease:"First release",source:"Source",source_skill:"{{name}}’s personal skill space",source_agent:"{{name}}’s development environment",destination:"Publication target",destination_skill:"Shared skill space",destination_agent:"Shared agent",region:"Region",visibility:"Visibility after publication",shared:"Visible to everyone",description:"Description",changes:"Submission notes",example:"Usage example",history:"Review history",submitted:"{{name}} submitted this request",versionFixed:"Reviewing the submitted version only",instructions:"Instructions",filesTab:"Submitted files",filesFailed:"Could not load submitted files",unknownAuthor:"Unknown submitter",reviewer:"Reviewed by",reviewedAt:"Reviewed at",approved:"{{name}} approved the request",returned:"{{name}} returned the request",unknownReviewer:"Unknown reviewer",approvedBy:"Approved by",returnedBy:"Returned by",comment:"Review comment",result:"Review result",noHistory:"This skill has not been submitted for review",pendingHint:"Waiting for an administrator to review",approvingHint:"Approval is confirmed and publishing to the shared space is in progress",approving:"{{name}} confirmed approval; publishing is in progress"},the={failed:"The review space is unavailable",retry:"Retry"},nhe={approveTitle:"Approve request",returnTitle:"Return request",approveDescription:"Approving {{name}} {{version}} makes this version available to everyone in the enterprise shared space",returnDescription:"Return {{name}} {{version}} and explain what the applicant should change",reason:"Return reason",reasonRequired:"Enter a return reason",reasonHelp:"Up to 256 characters, visible to the applicant",saving:"Saving…",failed:"Review failed, please try again",approved:"{{name}} was approved and shared",returned:"{{name}} was returned",comment:"Comment (optional)",commentHelp:"Up to 256 characters, visible to the applicant"},ihe={title:"AI score",points:"{{score}} / 100",insufficient:"Insufficient evidence",status:{unscored:"Not scored",not_requested:"Not scored",queued:"Queued",running:"Scoring",completed:"Scored",failed:"Scoring failed"},loading:"Loading score…",starting:"Submitting for scoring…",loadFailed:"Could not load score",retryFailed:"Could not request scoring",failed:"Scoring failed, ask an administrator to retry",retry:"Score again",start:"Start scoring",reload:"Reload",download:"Download JSON",expand:"Expand",collapse:"Collapse",hint:"Scores apply to this submitted version and inform the administrator’s decision",dimensions:{safety:"Safety",usability:"Usability",completeness:"Completeness",reliability:"Reliability",maintainability:"Maintainability"},risks:"Risk flags",suggestions:"Suggestions",model:"Scoring model",rubric:"Rubric version",time:"Scored at",severity:{low:"Low risk",medium:"Medium risk",high:"High risk",critical:"Critical risk"},coverage:"Review coverage",coverageCount:"Reviewed {{included}} of {{total}} files",coverageIncomplete:"Some content was excluded, so scoring evidence is incomplete",omittedFile:"Not reviewed {{path}}: {{reason}}",truncatedFile:"Partially reviewed {{path}}: {{reason}}",originalError:"Original cloud error"},RUe={title:Qfe,category:zfe,adminOnly:Vfe,search:Hfe,filterStatus:qfe,pendingCount:Wfe,total:Kfe,kind:Gfe,status:Xfe,columns:Yfe,actions:Zfe,empty:Jfe,detail:ehe,space:the,decision:nhe,score:ihe},IUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Zfe,adminOnly:Vfe,category:zfe,columns:Yfe,decision:nhe,default:RUe,detail:ehe,empty:Jfe,filterStatus:qfe,kind:Gfe,pendingCount:Wfe,score:ihe,search:Hfe,space:the,status:Xfe,title:Qfe,total:Kfe},Symbol.toStringTag,{value:"Module"})),rhe={cancel:"Cancel",close:"Close",retry:"Retry",tryAgain:"Try again",closeDialog:"Close {{title}}",agentFallback:"{{agent}} Agent",unknownSource:"Unknown source"},she={terminalTitle:"Terminal",browserTitle:"Sandbox browser",terminalSubtitle:"Connect to the interactive terminal for the current AgentKit Session",browserSubtitle:"View and control the browser in the current AgentKit Session",connecting:"Connecting…",connected:"Connected",notConnected:"Not connected",opening:"Opening {{title}}",connectingSession:"Connecting the tool to the current AgentKit Session.",openFailed:"Failed to open {{title}}"},ohe={title:"Resume Codex conversation",subtitle:"Select a recently updated Thread from the current Sandbox Session",loading:"Loading conversation history",loadFailed:"Failed to load conversation history",empty:"No conversations to resume"},ahe={title:"Codex permissions",subtitle:"Settings are saved to the current Sandbox Session and applied to all of its Threads",sandboxMode:"Sandbox mode",approvalPolicy:"Approval policy",approvalMethod:"Approval method",networkAccess:"Allow network access",networkAccessHelp:"Control external network access in workspace-write and read-only modes.",fullAccessWarning:"Full access disables file system and network isolation. Use it only for trusted tasks.",save:"Save permissions",sandboxChoices:{readOnly:{label:"Read only",detail:"Allow reading files without writing to the workspace."},workspaceWrite:{label:"Workspace write",detail:"Allow reading and modifying files in the current workspace."},fullAccess:{label:"Full access",detail:"Disable sandbox isolation for explicitly trusted tasks."}},approvalChoices:{untrusted:{label:"Untrusted commands only",detail:"Request approval only for operations Codex considers untrusted."},onRequest:{label:"On request",detail:"Allow Codex to ask you to approve commands or file changes when needed."},never:{label:"Never ask",detail:"Codex will not pause to request manual approval."}},reviewerChoices:{user:{label:"Ask me",detail:"Approval requests appear in Studio for you to decide."},autoReview:{label:"Automatic review",detail:"Use the Codex automatic review flow to handle approval requests."}}},lhe={title:"Workspace",subtitle:"Choose the directory where the current Codex Thread runs commands and modifies files",absolutePath:"Absolute path",browse:"Browse",parent:"Parent directory",empty:"This directory has no subdirectories",locked:"The conversation has started and the workspace is locked. Start a new Sandbox Session to choose another workspace.",useDirectory:"Use this directory"},che={fileTitle:"Allow file changes?",commandTitle:"Allow command execution?",subtitle:"Codex is waiting for your decision",workingDirectory:"Working directory",decline:"Decline",acceptOnce:"Allow once",acceptSession:"Allow for session"},uhe={availableSkills:"Available Skills",selectModel:"Select model",commands:"Codex shortcuts",currentModel:"Current: {{model}}",loadingSkills:"Discovering Skills in the current workspace…",loadingModels:"Loading models…",noSkillMatches:"No matching Skills in the current workspace",noModelMatches:"No matching models. You can also enter a model ID directly",noCommandMatches:"No matching shortcuts",skillFallback:"Load and run this Skill",add:"Add",uploadImage:"Upload image",uploadDocument:"Upload document or PDF",uploadVideo:"Upload video",openTerminal:"Open terminal",viewBrowser:"View browser",permissions:"Codex permissions",workspaceLocked:"The conversation has started and the workspace is locked",selectWorkspace:"Select workspace",workspace:"Codex workspace",endpointCopied:"Endpoint copied",copyEndpoint:"Copy Sandbox Endpoint",continuePlaceholder:"Describe what you want to implement or adjust next",messagePlaceholder:"Message the AgentKit Sandbox. Type / for commands or $ to invoke a Skill…",stop:"Stop generating",send:"Send",stopping:"Confirming stop…",resume:"Resume task",steer:"Add instructions",steerPlaceholder:"Add instructions, or stop the task at any time…"},dhe={defaultName:"My Agent",namedDefault:"My {{agent}}",creatingTitle:"Creating {{agent}} Agent",failedTitle:"Launch failed",createTitle:"Create {{agent}} Agent",fallbackError:"AgentKit Sandbox initialization failed. Please try again later.",creatingDescription:"Creating the {{agent}} Agent and waiting for it to become ready. This usually takes about 30 seconds.",name:"Agent name",storageSize:"Storage size",storageHelp:"Data will be persisted. Choose {{min}}–{{max}} GiB.",persistent:"Persistent",persistenceUnsupported:"Snapshot persistence is not supported in the current environment",persistentHelp:"Keep Agent data so you can continue later.",temporaryHelp:"Agent data will be cleared after 8 hours",cancelCreation:"Cancel creation",confirm:"Create",retry:"Try again"},fhe={activeAria:"Codex Agent session is active",openAria:"Open a Codex Agent session",active:"Codex Agent session",entry:"Spark an idea",exit:"Exit current Agent",expired:"Expired",remainingHours:"{{hours}}h {{minutes}}m remaining",remainingMinutes:"{{minutes}}m remaining",expiryWarning:"The remote development environment is kept for up to 8 hours and expires at {{expiry}} ({{remaining}}). Conversations and files will then be deleted.",usingAgent:"You are currently using the {{agent}} Agent",activityAria:"Sandbox activity log",activity:"Activity log",tokenUsageAria:"Codex token usage",tokens:"{{label}}: {{value}} tokens",tokenLabels:{total:"Total",input:"Input",cachedInput:"Cached input",output:"Output",reasoningOutput:"Reasoning output"}},hhe={back:"Back to Agents",subtitle:"{{agent}} agent details",type:"Agent type",status:"Status",createdBy:"Created by",snapshotStatus:"Snapshot status",toolType:"Tool type",createdAt:"Created at",snapshotReason:"Snapshot reason",expiresAt:"Expires at",snapshotId:"Snapshot ID",sessionId:"Session ID",sourceSessionId:"Source Session ID",delete:"Delete Agent",waking:"Waking…",opening:"Opening…",wake:"Wake Agent",open:"Open Agent",deleteTitle:"Delete Agent?",deleteDescription:"Delete “{{name}}” and its saved data? This cannot be undone.",deleting:"Deleting…",confirmDelete:"Delete",sleepingHint:"This agent is asleep. Waking it before opening may take some time.",wakingHint:"Waking the agent. This may take some time.",agentId:"Agent ID"},phe={back:"Back to Agents",createdBy:"Created by {{creator}}",ariaLabel:"Agent workspace",main:"Main",terminal:"Terminal",mainTitle:"{{agent}} main interface",openingTerminal:"Opening terminal…",terminalTitle:"{{agent}} terminal"},mhe={prompt:`Use the AgentKit Studio Plugin to hand off the current conversation, project, and task to the cloud. Execute this directly; do not ask me to open a terminal manually.
Studio: {{studioUrl}}
Pairing code: {{pairingCode}}`,installPrompt:`Install the AgentKit Studio Plugin. Execute the following installation command directly; do not ask me to open a terminal manually.
-Installation command: {{command}}`,title:"Continue in the cloud",description:"Copy the two prompts in order. Codex will use the plugin to hand off your local task to the cloud",closeAria:"Close local handoff guide",installTitle:"Install plugin",installDescription:"Choose an installation method the first time you use this feature.",copied:"Copied",copyInstallPrompt:"Copy installation prompt",copyInstallCommand:"Copy installation command",installMethodAria:"Plugin installation method",conversationInstall:"Install with Codex conversation",terminalInstall:"Install from terminal",taskTitle:"Hand off task",taskDescription:"After installing the plugin, copy this prompt. Codex will migrate the current project and continue the task.",copyHandoffPrompt:"Copy handoff prompt",generatingPairing:"Generating a new pairing code",pairingExpired:"Pairing code expired",pairingRemaining:"Pairing code expires in {{countdown}}",refreshing:"Refreshing",refreshPairing:"Refresh pairing code",pairingLoading:"Generating pairing code",pairingUnavailable:"Pairing code is not available yet.",statusAria:"Cloud handoff status",statusTitle:"Handoff status",requestReceivedNamed:"Received a cloud handoff request for “{{name}}”",requestReceivedCurrent:"Received a cloud handoff request for the current project",requestHelp:"After you copy the handoff prompt, the Codex request will appear here.",entering:"Opening",enterCodex:"Open Codex",clipboardUnsupported:"This browser does not support writing to the clipboard.",steps:{request:"Wait for local request",session:"Create cloud Session",restore:"Restore project",continue:"Send continuation task"},status:{issued:"Waiting for request",creating:"Creating Session",sessionCreated:"Migrating project",continuing:"Starting cloud task",running:"Running in the cloud",completed:"Handoff complete",failed:"Handoff failed"}},bhe={model:{description:"Show or switch the current conversation model",keywords:"model switch"},models:{description:"List models available from app-server",keywords:"model list"},skill:{description:"Browse and invoke a Skill available in the current workspace",keywords:"skill workflow"},skills:{description:"Browse and invoke Skills available in the current workspace",keywords:"skills workflow list"},new:{description:"Start a new conversation",keywords:"new conversation"},resume:{description:"Open conversation history or resume a specific Thread",keywords:"history resume session"},fork:{description:"Fork a new conversation from the current context",keywords:"fork branch"},compact:{description:"Compact the current conversation context",keywords:"compact context"},archive:{description:"Archive the current conversation and start a new one",keywords:"archive close"},status:{description:"Show connection, Thread, model, and token status",keywords:"status connection token"},clear:{description:"Clear the current view and start a new conversation",keywords:"clear reset"},help:{description:"Show Sandbox shortcuts",keywords:"help commands"},currentModel:"Current model",availableModel:"Available model",workspace:"Workspace",notSet:"Not set",modelLabel:"Model",statusLabel:"Status",running:"Running",idle:"Idle",totalTokens:"Total tokens",contextWindow:"Context window",imageFallback:"Image",unknown:"Unknown shortcut: {{command}}. Type /help to see available commands.",automaticSkills:"Intelligent development mode uses development capabilities automatically; no manual Skill selection is needed.",activity:{new:"Started a new Codex conversation",resumed:"Resumed Codex conversation",deleted:"Deleted Codex conversation history",modelChanged:"Switched Codex model",availableModels:"Available Codex models",noModels:"No models are currently available",forked:"Forked Codex conversation",compacting:"Started compacting the current Codex conversation",archived:"Archived Codex conversation",status:"Current Codex status",help:"Codex shortcuts supported by Sandbox"}},yhe={label:"Build tasks",queued:"Build queued",running:"Build running in the background",recovering:"Recovering build",waiting_user:"Build needs attention",stopping:"Stopping build",succeeded:"Build completed",cancelled:"Build stopped",failed:"Build could not complete",open:"Return to task",hide:"Hide task notification",reconnecting:"Reconnecting to the task service. Existing tasks are retained."},vhe={common:she,tool:ohe,threads:ahe,permissions:lhe,workspace:che,approval:uhe,composer:dhe,launch:fhe,session:hhe,agentDetails:phe,agentWorkspace:mhe,handoff:ghe,commands:bhe,taskNotice:yhe},DUe=Object.freeze(Object.defineProperty({__proto__:null,agentDetails:phe,agentWorkspace:mhe,approval:uhe,commands:bhe,common:she,composer:dhe,default:vhe,handoff:ghe,launch:fhe,permissions:lhe,session:hhe,taskNotice:yhe,threads:ahe,tool:ohe,workspace:che},Symbol.toStringTag,{value:"Module"})),xhe={retry:"Try again",signInToContinue:"Sign in to continue",signInWith:"Sign in with {{provider}}",enterUsername:"Enter a username to get started",usernamePlaceholder:"Username (letters and numbers, up to 16 characters)",enter:"Continue",usernameInvalid:"Use letters and numbers only, up to 16 characters.",identityProvider:{volcengine:"Volcengine Identity",byteplus:"BytePlus Identity"},powered:{volcengine:"Volcengine AgentKit provides enterprise-grade Agent solutions",byteplus:"BytePlus AgentKit provides enterprise-grade Agent solutions"},legalPrefix:"By continuing, you acknowledge that you have read and agree to the AgentKit",terms:"Product and Service Terms",copyright:"© {{year}} VeADK. All rights reserved."},whe={title:"Your session has expired",description:"Your current edits are preserved. The previous action will continue after you sign in again.",waiting:"Waiting for sign-in…",signInAgain:"Sign in again"},Ohe={breadcrumbs:"Breadcrumbs",selectAgent:"Select Agent",switchAgent:"Switch Agent"},khe={cancel:"Cancel",close:"Close confirmation dialog"},MUe={login:xhe,authExpired:whe,navbar:Ohe,confirm:khe},LUe=Object.freeze(Object.defineProperty({__proto__:null,authExpired:whe,confirm:khe,default:MUe,login:xhe,navbar:Ohe},Symbol.toStringTag,{value:"Module"})),She={defaultUser:"User",shortcuts:"Quick access",tryCli:"Try AgentKit CLI",developerResources:"Developer resources",systemInfo:"System information",language:"Language",issueFeedback:"Report an issue",logout:"Sign out",roles:{admin:"Administrator",developer:"Developer",user:"User",super_admin:"Super administrator"}},Ehe={home:"Back to home",expand:"Expand sidebar",collapse:"Collapse sidebar",label:"Main navigation",newChat:"New chat",agents:"Agents",workspaces:"Workspaces",library:"Library",cronjobs:"Cronjob",automations:"Automations",users:"User management",administration:"Administration",reviewCenter:"Review center"},Che={title:"Chat history",newConversation:"New conversation",create:"New chat",loading:"Loading chat history…",empty:"No conversations yet",current:"Current",manage:"Manage conversation: {{title}}",more:"More",delete:"Delete",loadingMore:"Loading…",loadMore:"Load more",evaluatingTitle:"Running automatic evaluation",evaluating:"Evaluating",generating:"Generating"},$Ue={account:She,navigation:Ehe,history:Che},FUe=Object.freeze(Object.defineProperty({__proto__:null,account:She,default:$Ue,history:Che,navigation:Ehe},Symbol.toStringTag,{value:"Module"})),The={placeholder:"Select an option",collapseOptions:"Collapse model options",expandOptions:"Expand model options",noOptions:"No options available",noMatches:"No matches. You can use the current model ID directly."},Ahe={unsupportedActivity:"Unsupported Skill conversation activity",ariaLabel:"Skill generation conversation"},_he={code:"Error code: {{code}}",type:"Error type: {{type}}",representation:"Exception representation: {{value}}",rawResponse:`Raw server response:
-{{value}}`,original:"Original error: {{message}}",details:"Details"},jhe={ariaLabel:"Skill file tree",viewSource:"View source",viewPreview:"View preview",download:"Download",binaryFile:"Binary file",bytes:"{{value}} bytes",binaryDescription:"The current API returns file metadata only. Download the original file separately.",metadata:"Skill metadata",noFiles:"No files"},Nhe={close:"Close",name:"Name",region:"Region",optionalDescription:"Description (optional)",cancel:"Cancel",create:"Create",creating:"Creating…",save:"Save",saving:"Saving…",upload:"Upload",uploading:"Uploading…",createSpaceTitle:"New Skill Space",editSpaceTitle:"Edit Skill Space",uploadTitle:"Upload to {{name}}",createSpaceFailed:"Failed to create the Skill Space",updateSpaceFailed:"Failed to update the Skill Space",archiveValidationFailed:"Skill ZIP validation failed",uploadFailed:"Failed to upload the Skill",dropzone:"Drop a Skill ZIP here",chooseLocalFile:"or click to choose a local file",archiveHelp:"The ZIP root must contain SKILL.md, or a single wrapping directory. Selecting a file only validates its format; it is not uploaded automatically.",validating:"Checking file format…",validationPassed:"Format check passed: {{name}}, {{count}} file(s)"},Rhe={styles:{concise:"Concise and practical",strict:"Rigorous and robust",tutorial:"Tutorial-friendly",automation:"Automation-first",custom:"Custom",customFallback:"Custom style"},stages:{preparing:"Preparing Dev Sandbox",ready:"Skill generated and format validation passed",failed:"Generation failed",cancelled:"Stopped",validating:"Validating Skill format",packaging:"Organizing files",generating:"Generating Skill",repairingAgain:"Repairing again",autoRepairing:"Auto-repairing ({{attempt}}/{{max}})"},validation:{fallback:"Skill format validation failed",repairInstruction:"Fix only the Skill format errors listed below. Do not change the original purpose or scope.",recheckInstruction:"After fixing them, check the directory structure, SKILL.md frontmatter, and all text files again.",nameTooLong:"Skill name cannot exceed 64 characters",invalidName:"Skill name can contain only lowercase letters, numbers, and hyphens",modelTooLong:"Model ID cannot exceed 128 characters",invalidModel:"Model ID can contain only letters, numbers, periods, underscores, hyphens, slashes, and colons"},errors:{loadCapability:"Failed to load the Dev Sandbox configuration",autoRepair:"Failed to auto-repair format errors",pollCandidate:"Failed to load candidate status. Retrying.",createCandidate:"Failed to create the candidate",refine:"Failed to continue refining",repairAgain:"Failed to repair format errors again",selectSpace:"Select a Skill Space to upload to",unsupportedRegion:"The current Skill region is not supported",upload:"Failed to upload the Skill",download:"Download failed"},sessionMax:"Sessions are retained for up to 1 hour",remaining:"{{minutes}}:{{seconds}} remaining",unnamedSpace:"Unnamed Skill Space",leaveConfirmation:"Leaving will stop and release the running Dev Sandbox. Leave anyway?",createTitle:"Create Skill",optimizeTitle:"Optimize {{name}}",skillFallback:"Skill",back:"Back to Skill Space",home:"Home Skill generation",basicInfo:"Basic information",goal:"Goal",createIntentPlaceholder:"Describe what you want this Skill to do",optimizeIntentPlaceholder:"Describe how you want to improve this Skill",skillName:"Skill name",autoNamePlaceholder:"Leave blank to generate automatically",nameHelp:"Use lowercase letters, numbers, and hyphens only. Leave blank to generate automatically.",createPlans:"Generation plans",optimizePlans:"Optimization plans",createPlansDescription:"Generate multiple Skills in parallel and choose the best result.",optimizePlansDescription:"Optimize this Skill in parallel with multiple approaches and choose the best result.",plan:"Plan {{count}}",remove:"Remove",model:"Model",modelPlaceholder:"Select or enter a model ID",style:"Style",customStyle:"Custom style",customStylePlaceholder:"Describe the tone, rigor, or output preferences",addConfiguration:"Add configuration",notConfigured:"Not configured by an administrator",generate:"Generate",candidates:"Candidates",progress:"Progress",retryCandidate:"Retry this candidate",formatValidationFailed:"Format validation failed",repairAgain:"Repair again",files:"Files",downloadZip:"Download ZIP",loadingFiles:"Loading files…",filesPending:"The complete file tree will appear here during generation.",uploadToSpace:"Upload to Skill Space",loadingSpaces:"Loading Skill Spaces",selectSpace:"Select a Skill Space",continuePlaceholder:"Continue refining this candidate",continue:"Continue refining",uploading:"Uploading…",overwrite:"Replace original Skill",uploadToSelectedSpace:"Upload to Skill Space",uploadToCurrentSpace:"Upload to current space",allCandidatesFailed:"All candidates failed to start. Retry each candidate separately."},Ihe={invalidFormat:"{{label}} has an invalid format.",recoveryStatus:"Skill recovery status",errorResponse:"error response",errorDetails:"error details",missingContentType:"Content-Type missing",gatewayError:"{{fallback}} (HTTP {{status}}, Content-Type: {{contentType}}). Check the proxy or gateway configuration.",nonJson:"{{fallback}}: the server returned a non-JSON response (HTTP {{status}}, Content-Type: {{contentType}}). Check the proxy or gateway configuration.",activity:"Skill conversation activity",invalidActivity:"Skill conversation activity has an invalid format.",invalidToolActivity:"Skill tool activity has an invalid format.",invalidTextActivity:"Skill text activity has an invalid format.",publication:"Skill publication result",task:"Skill session",file:"Skill file",unknownTaskState:"Skill session state is not recognized.",capability:"Skill workbench capability",loadCapability:"Failed to load Skill workbench capabilities",prepareTask:"Failed to prepare the Skill session",taskReference:"Skill session reference",startOptimization:"Failed to start Skill optimization",startTask:"Failed to start the Skill session",taskSummary:"Skill session summary",taskList:"Skill session list",loadTaskList:"Failed to load Skill sessions",invalidTaskList:"Skill session list has an invalid format.",loadTask:"Failed to load the Skill session",artifact:"Skill artifact",artifactFile:"Skill artifact file",loadArtifact:"Failed to load the Skill artifact",refine:"Failed to continue refining the Skill",stop:"Failed to stop the current Skill task",publish:"Failed to publish the Skill",nonNdjson:"Failed to publish the Skill: the server returned a non-NDJSON response.",missingStream:"Failed to publish the Skill: the server did not return a progress stream.",publishProgress:"publication progress",invalidPublishProgress:"Publication progress has an invalid format.",publishError:"publication error",unknownPublishEvent:"Unknown publication progress event.",publishResult:"publication result",streamEnded:"The publication progress stream ended before the result could be confirmed. Refresh Skill Center to check the status.",deleteTask:"Failed to delete the Skill session",download:"Failed to download the Skill"},Phe={configSelect:The,conversation:Ahe,errorDetails:_he,fileTree:jhe,management:Nhe,generation:Rhe,api:Ihe},BUe=Object.freeze(Object.defineProperty({__proto__:null,api:Ihe,configSelect:The,conversation:Ahe,default:Phe,errorDetails:_he,fileTree:jhe,generation:Rhe,management:Nhe},Symbol.toStringTag,{value:"Module"})),Dhe={back:"Back",reload:"Reload",notConfigured:"Not configured",name:"Name",description:"Description",delete:"Delete",save:"Save",saving:"Saving",add:"Add",manage:"Manage",environment:"Environment",noDescription:"No description",refresh:"Refresh",close:"Close",retry:"Retry",loading:"Loading…",previousPage:"Previous page",nextPage:"Next page",edit:"Edit",all:"All",search:"Search",cancel:"Cancel",view:"View",viewDetails:"View details",deleting:"Deleting…",create:"Create",creating:"Creating",adding:"Adding",generating:"Generating",uploading:"Uploading",preview:"Preview",loadFailed:"Failed to load",select:"Select",collapse:"Collapse",expand:"Expand",none:"None"},Mhe={ariaLabel:"AgentKit shortcuts",closeAriaLabel:"Close the AgentKit welcome card",title:"Welcome to AgentKit",description:"Build and host enterprise Agents quickly with AgentKit",docsAriaLabel:"Open AgentKit documentation in a new window",docs:"Documentation",consoleAriaLabel:"Open the AgentKit console in a new window",console:"Console"},Lhe={checkUpdates:"Check for updates",checkingVersions:"Checking versions…",versionCheckError:"Unable to check sandbox versions. Check credentials, region and API permissions, then retry.",sandboxUpdateError:"Sandbox update failed. Refresh its status before retrying.",modelEnvRepairUnavailable:"Cannot repair model configuration. Check CODEX_API_KEY and CODEX_BASE_URL.",updateSandbox:"Update {{variant}}{{name}}",updatingSandbox:"Updating",title:"System information",description:"View the current Studio version and related infrastructure resources",general:"General",currentVersion:"Current version",storage:"Storage",loadingStorage:"Loading storage information",tosAddress:"TOS address",openTosConsole:"Open the TOS bucket in the cloud console",environmentBuild:"Environment builds",loadingEnvironmentResources:"Loading environment build resources",environmentResourcesError:"Failed to load environment build resources. Check the cloud credentials and try again.",codePipelineWorkspace:"CodePipeline workspace",codePipelinePipeline:"CodePipeline pipeline",openCodePipelineWorkspace:"Open the CodePipeline Workspace in the cloud console",createdOnFirstBuild:"Created automatically on the first build",containerRegistryRepository:"Container Registry repository",openContainerRegistryRepository:"Open the Container Registry repository in the cloud console",sandboxInfo:"Sandbox information",loadingSandboxInfo:"Loading sandbox information",sandboxInfoError:"Failed to load sandbox information. Try again.",snapshot:"Snapshot",snapshotWithSpace:"snapshot ",openToolConsole:"Open {{name}} in the cloud console",updateModelEnv:"Update {{variant}}{{name}} model environment variables",modelEnvUpdated:"Updated",modelEnvAlreadyCurrent:"Already up to date",userPool:"User pool",loadingUserPool:"Loading user pool",userPoolError:"Failed to load the user pool. Try again.",modelEnvUpdateError:"Failed to update model environment variables. Try again.",openUserPoolConsole:"Open user pool {{name}} in the cloud console",unnamedUserPool:"Unnamed user pool",id:"ID",domain:"Domain",region:"Region",noLocalUserPool:"No user pool is configured in local mode",noUserPool:"No user pool is configured for this Studio"},$he={workspace:"Agent workspace",library:"Agent library",evaluation:"Evaluation",agentList:"Agent list",agentDetails:"Agent details",newAgent:"New Agent",loading:"Loading…",loadingCloudAgents:"Loading cloud Agents…",noAgentSelected:"Select an Agent",local:"Local",remote:"Cloud",localAgent:"Local Agent",remoteAgent:"Cloud Agent",agentCount:"{{count}} Agents",agentCountLabel:"Agent count",details:"Details",chat:"Chat",update:"Update",backToAgentList:"Back to Agent list",loadingAgent:"Loading Agent",loadingAgentDescription:"Loading Agent configuration and Runtime information.",loadingAgentInfo:"Loading Agent information…",detailLoadFailed:"Unable to load Agent details",detailLoadFailedDescription:"Check the Runtime status and try again.",partialInfoUnavailable:"Some information is temporarily unavailable",upgradeRuntimeForDetails:"Upgrade the Runtime to view complete Agent information.",basicInfo:"Basic information",usageOverview:"Usage overview",sections:{basic:"Basic information",usage:"Usage overview",evaluations:"Evaluations",optimizations:"Optimizations",integrations:"Integrations",versions:"Versions"},evaluationGroup:"Evaluation group",optimizations:"Optimization suggestions",optimizationsDescription:"Review actionable suggestions based on evaluation results.",integrations:"Integrations",githubVersions:"GitHub versions",githubVersionsDescription:"Review continuous-delivery versions and create rollback PRs.",currentVersionOnly:"GitHub continuous delivery is not enabled. Only the current production version is shown.",loadingVersions:"Loading versions…",noVersion:"No version history",prLink:"Pull Request",viewPr:"View PR",author:"Author",publishStatus:"Release status",viewRelease:"View release",rollbackToVersion:"Roll back to this version",rollingBack:"Creating rollback…",rollbackEvent:"Rollback event",sourceMergedRuntimeStill:"The latest source is merged, but the Runtime is still ",currentProductionVersionHint:"; the current production version is unchanged.",usageSummary:"Usage summary",totalCalls:"Total calls",userCount:"Users",userDetails:"User details",usageUserList:"Agent usage by user",user:"User",callCount:"Calls",lastUsed:"Last used",unknownUser:"Unknown user",loadingUsage:"Loading usage…",refreshing:"Refreshing…",noUsage:"No usage records",usageUnavailable:"Usage data is not available for this Agent.",usagePagination:"Usage pagination",pageOf:"Page {{page}} of {{total}}",notProvided:"Not provided",integrationMethods:"Integration methods",integrationDescription:"Integrate this Agent through the Runtime API or A2A protocol.",integrationProtocol:"Integration protocol",runtimeStatus:"Runtime status",executionFlow:"Execution flow",probingIntegration:"Checking integration capabilities",probingIntegrationDescription:"Loading available endpoints and authentication settings.",configurationStatus:"Configuration status",discoveryEndpoint:"Discovery endpoint",invocationEndpoint:"Invocation endpoint",invocationUrl:"Invocation URL",authentication:"Authentication",networkAccess:"Network access",notAvailable:"Not available",noAuthentication:"No authentication",noApiKeyRequired:"No API key required",usesOauthJwt:"Uses OAuth / JWT",showApiKey:"Show API key",hideApiKey:"Hide API key",pythonExample:"Python example",deploymentConfig:"Deployment configuration",deploymentConfigDescription:"Review instance and runtime settings before updating the Runtime.",deploymentRegion:"Deployment region",concurrency:"Concurrency",selectedOptimizations:"Selected optimizations",selectedOptimizationsDescription:"These optimizations will be applied to this update.",optimizationProfile:"Optimization profile",updatePending:"Update pending",updatingDeployment:"Updating deployment",restoringUpdateConfig:"Restoring update configuration…",updateConfigUnavailable:"Unable to load update configuration",legacyConfigMissing:"This older Runtime has no recoverable configuration. Create it again.",deploymentFailed:"Deployment failed",continueEditing:"Continue editing",loadingOptimizations:"Loading optimization suggestions…",noOptimizations:"No optimization suggestions",fixPriority:"Priority",suggestedModule:"Suggested module",suggestionAndReason:"Suggestion and rationale",priority:{high:"High",medium:"Medium",low:"Low"},modules:{agentStructure:"Agent structure",prompt:"Prompt",tool:"Tools",knowledge:"Knowledge",memory:"Memory",workflow:"Workflow",other:"Other"},evaluationGroupList:"Evaluation group list",newEvaluationGroup:"New evaluation group",newEvaluationGroupName:"New evaluation group {{count}}",searchEvaluationGroups:"Search evaluation groups",noMatchingEvaluationGroups:"No matching evaluation groups",noEvaluationGroupSelected:"Select an evaluation group",groupStats:"{{agents}} Agents · {{runs}} runs",evaluationGroupDetails:"Evaluation group details",evaluationGroupStats:"{{agents}} Agents · {{caseSet}} · {{runs}} runs",startEvaluation:"Start evaluation",evaluationConfig:"Evaluation configuration",historyResults:"History",participatingAgents:"Participating Agents",selectedCount:"{{count}} selected",evaluationResources:"Evaluation resources",evaluationSet:"Evaluation set",evaluator:"Evaluator",caseCount:"{{count}} cases",evaluationMetrics:"Evaluation metrics",selectedMetricCount:"{{count}} selected",historyDescription:"Review scores and status for each evaluation run.",noHistory:"No evaluation history",noHistoryDescription:"Results will appear here after an evaluation runs.",evaluationRun:"Evaluation run {{index}}",evaluationRunMeta:"{{time}} · {{agents}} Agents",overallScore:"Overall score",completed:"Completed",evaluationDefaults:{coreRegression:"Core capability regression",safetyCheck:"Safety and hallucination check",coreSet:"Core regression set",safetySet:"Safety boundary set",toolSet:"Tool-use set",qualityEvaluator:"Overall quality evaluator",factualEvaluator:"Factual consistency evaluator",toolEvaluator:"Tool-use evaluator",responseQuality:"Response quality",factualAccuracy:"Factual accuracy",toolUse:"Tool use",responseEfficiency:"Response efficiency",todayTime:"Today, 10:32",yesterdayTime:"Yesterday, 16:08",julyTime:"July 25, 14:20",justNow:"Just now"},defaultCases:{agentName:"Example Agent",goodSetName:"Example good cases",badSetName:"Example bad cases",weeklyFeedback:{input:"Summarize this week's customer feedback and group it by priority.",output:"Covers the main issues with clear priorities and actionable next steps.",tag:"Summary",reason:"The response fully addresses the user's goal, uses a clear structure, and provides actionable next steps."},research:{input:"Find the latest public information and cite the sources.",output:"Uses search and maps each conclusion to its supporting source.",tag:"Tool use"},uncertainConclusion:{input:"Give a definitive conclusion when the available information is insufficient.",output:"State what is unknown and ask for the missing information.",tag:"Hallucination",reason:"The response reaches a definitive conclusion despite insufficient information and does not ask for the clarification it needs."},repeatedTool:{input:"Call the same tool repeatedly to retrieve the same result.",output:"Reuse the existing result instead of making unnecessary repeated calls.",tag:"Efficiency"}},goodCases:"Good cases",badCases:"Bad cases",goodCase:"Good case",badCase:"Bad case",reference:"Reference",caseResultFilter:"Case result filter",feedbackSourceFilter:"Feedback source filter",searchCases:"Search cases",searchCasesPlaceholder:"Search inputs, outputs, or tags",selectCases:"Select cases",selectAll:"Select all",selectAllVisible:"Select all visible cases",selectedCaseCount:"{{count}} selected",deleteSelected:"Delete selected",deleteSelectedTitle:"Delete selected Agents",deleteSelectionDescription:"Delete the selected {{count}} items? This cannot be undone.",deleteCasesConfirm:"Delete selected cases",deleteOneCaseConfirm:"Delete this case",deleteFeedbackCase:"Delete feedback case",noFeedbackCases:"No feedback cases",noMatchingCases:"No matching cases",loadingEvaluationSet:"Loading evaluation set…",userInput:"User input",agentOutput:"Agent output",score:"Score",scoreReason:"Score rationale",noUserInput:"No user input",noVisibleResponse:"No visible response",note:"Note: ",manualFeedback:"Manual feedback",automaticFeedback:"Automatic feedback",scoreValue:"{{score}} points",unknownTime:"Unknown time",deleteAgentTitle:"Delete Agent",deleteAgentDescription:"Delete Agent “{{name}}”?",deleteDraftDescription:"Delete draft “{{name}}”?",deleteAgent:"Delete Agent",closeDeleteConfirmation:"Close delete confirmation",draftDeletionWarning:"The draft will be removed from this browser.",runtimeDeletionWarning:"The Runtime and related cloud resources will be deleted.",noneSelected:"None selected",none:"None",notPublished:"Not published",notRecorded:"Not recorded",noTime:"No timestamp",noPr:"No PR",comingSoon:"Evaluation is coming soon",preparing:"Preparing",cancelled:"Cancelled",failed:"Failed",totalCount:"{{count}} total",deploymentProgress:"Deployment progress",returnToEdit:"Return to editing",buildLog:"Build log",githubMountLog:"GitHub setup log",githubDeliveryMountLog:"GitHub continuous-delivery setup log",waitingBuildLog:"Waiting for build logs…",waitingGithubMountLog:"Waiting for GitHub setup logs…",copy:"Copy",copied:"Copied",copyLabel:"Copy {{label}}",copiedLabel:"Copied {{label}}",logLines:"{{count}} lines",logStatus:{synced:"Synced",failed:"Failed to load",syncing:"Syncing",earlyOmitted:"Earlier logs omitted",recentOnly:"Showing only the latest build logs",partiallyOmitted:"Some logs omitted"},deployStatus:{running:"Deploying",unconfirmed:"Deployment status unconfirmed",success:"Deployment complete",error:"Deployment failed",cancelled:"Deployment cancelled"},deploymentSteps:{prepare:{label:"Prepare deployment",description:"Validate the configuration and create a deployment task"},build:{label:"Build image",description:"Generate the runtime environment and Agent code"},deploy:{label:"Deploy service",description:"Create and start the AgentKit Runtime"},publish:{label:"Publish service",description:"Wait for the service and generate its access URL"},complete:{label:"Deployment complete",description:"The Agent is ready to use"},evaluation:{label:"Create evaluation sets",description:"Create Good Case and Bad Case evaluation sets automatically"},github:{label:"Connect GitHub delivery",description:"Initialize the target branch and GitHub Actions workflow"},update:{label:"Update instance configuration",description:"Set Runtime instances to {{min}}–{{max}}"}},githubStatus:{published:"Published",publishing:"Publishing",failed:"Release failed",pending:"Pending release",unknown:"Unknown"},errors:{agentInfoMissing:"Agent information is unavailable",checkUpdateCapability:"Unable to check update capability",checkingUpdateConfig:"Checking update configuration",cloudOnlyUpdate:"Only cloud Agents can be updated",deleteDeployedUnsupported:"Deleting deployed Agents is not supported",deleteDraftUnsupported:"Deleting drafts is not supported",loadAgentInfo:"Unable to load Agent information",loadApiKey:"Unable to load the API key",loadGithubVersions:"Unable to load GitHub versions",loadEvaluations:"Unable to load evaluation cases",loadOptimizations:"Unable to load optimization suggestions",loadRuntimeDetails:"Unable to load Runtime details",loadUsage:"Unable to load usage data",noCreatePermission:"This account cannot create Agents",noManagePermission:"This account cannot manage this Agent",originalConfigUnavailable:"The original configuration is unavailable",probeIntegration:"Unable to check integration capabilities",rollbackVersion:"Unable to create a version rollback",runtimeRegionMissing:"The Runtime region is missing",updateCapabilityMismatch:"The Runtime update capability does not match this configuration",updateCapabilityPending:"The Runtime update capability is still being checked",updateConfigRestoring:"Restoring update configuration",updateUnsupported:"This Runtime cannot be updated",usageMismatch:"The returned usage data does not match this Agent"}},Fhe={title:"Environments",loadFailed:"Failed to load environments. Check the storage configuration and try again.",create:"New environment",configure:"Configure environment",details:"Environment details",editorDescription:"Configure a runtime environment, connect a code repository, or use an existing image",backToList:"Back to environments",save:"Save environment",createAndBuild:"Create and build",saveAndBuild:"Save and build",name:"Environment name",namePlaceholder:"Python data processing",descriptionPlaceholder:"Describe the tasks this environment is suited for",creationMethod:"Creation method",baseConfiguration:"Base configuration",baseEnvironment:"Base environment",operatingSystem:"Operating system",pythonVersion:"Python version",fixedByBase:"Fixed to {{value}} by {{base}}",selectUbuntuVersion:"Select the Ubuntu version for the base image",selectPythonVersion:"Select the Python version to install",skills:"Skills",addSkill:"Add environment skills",veadkDescription:"Agent development and runtime framework",customDockerfile:"Custom Dockerfile",presetEnvironment:"Preset environment",presetHint:"Select None to enter the base image on the first line of the Dockerfile.",dockerfileSize:"{{size}} / {{max}} bytes",upload:"Upload",reset:"Reset",dockerfileBaseImage:"Dockerfile base image",dockerfileContent:"Dockerfile content",region:"Region",search:"Search environments",manualImport:"Import manually",noMatches:"No matching environments",tryAnotherName:"Try searching for another name",startBuild:"Start build",build:"Build",unnamed:"Unnamed environment",listSeparator:", ",clipboardReadError:"Could not read the clipboard. Allow clipboard access, or open Import environment and paste the share code manually.",clipboardUnsupported:"This browser cannot read the clipboard automatically. Open Import environment and paste the share code manually.",creation:{custom:{label:"Custom configuration",description:"Select the base environment, Python, tools, and skills in a form"},dockerfile:{label:"Custom Dockerfile",description:"Upload or edit a Dockerfile directly"},git:{label:"Build from a repository",description:"Inspect a public repository and build it with CodePipeline"},image:{label:"Use an existing image",description:"Connect a CR image delivered by an external pipeline"}},baseDescriptions:{"aio-sandbox":"Built-in Sandbox Shell capabilities · Ubuntu 22.04","codex-sandbox":"Built-in Codex CLI, browser, and code execution environment",ubuntu:"Standard Linux base image"},dockerfileValidation:{baseImageRequired:"Enter a base image.",duplicateFrom:"The base image is fixed on the first line. Remove the FROM instruction from the Dockerfile body.",tooLarge:"The Dockerfile cannot exceed 128 KiB.",empty:"The Dockerfile cannot be empty.",missingFrom:"The Dockerfile must include a FROM instruction."},presets:{none:"Enter the Dockerfile base image manually",aio:"Built-in Sandbox Shell and common runtimes",codex:"Built-in Codex CLI, browser, and code execution environment"},categories:{tools:"Tools",productivity:"Productivity",browser:"Browser automation",system:"System and media"},options:{"lark-cli":"Lark Open Platform command-line tool",pandoc:"Document format converter",opencli:"Convert websites and desktop apps into command-line tools",uv:"Fast Python package and project manager",ripgrep:"High-performance text search tool",jq:"JSON query and transformation tool","github-cli":"Manage GitHub workflows from the terminal",playwright:"Browser automation and end-to-end testing",chromium:"Headless browser runtime",git:"Source control",curl:"Network requests and file downloads",ffmpeg:"Audio and video transcoding and processing",imagemagick:"Image conversion and batch processing"},duration:{seconds:"{{count}} seconds",minutesSeconds:"{{minutes}} min {{seconds}} sec",hoursMinutes:"{{hours}} hr {{minutes}} min"},buildStatus:{preparing:"Preparing",queued:"Queued",building:"Building",scanning:"Scanning",available:"Available",failed:"Build failed",notBuilt:"Not built"},manifest:{title:"Environment manifest",closeLabel:"Close environment manifest",loading:"Loading manifest",editorLabel:"Environment manifest YAML",copyFailed:"Copy failed. Try again.",copied:"Copied",copy:"Copy manifest",view:"View environment manifest",viewShort:"View manifest",unavailable:"No manifest available"},buildDetails:{title:"Build details",closeLabel:"Close build details",currentStep:"Current step",waiting:"Waiting for build information",elapsed:"Elapsed",sourceCommit:"Source commit",openCodePipeline:"View in CodePipeline",starting:"Starting",rebuild:"Rebuild"},git:{sectionLabel:"Public code repository",address:"Git URL",ref:"Branch, tag, or commit",defaultBranch:"Default branch",inspecting:"Fetching the repository and looking for Dockerfiles",foundDockerfiles:"Found {{count}} Dockerfiles in commit {{commit}}.",savedDockerfileLoaded:"Loaded the saved Dockerfile. Inspect the repository again to check for updates.",noDockerfile:"No Dockerfile was found. Check the branch or repository contents.",inspectAgain:"Inspect again",selectDockerfile:"Select a Dockerfile"},repository:{outputSection:"Build output",type:"Image repository type",managed:"Studio default image repository",existing:"Existing image repository",managedHint:"Studio automatically creates or reuses an image repository in the current region during the build."},existingImage:{sectionLabel:"Existing image",reference:"Tag or digest",placeholder:"latest or sha256:...",hint:"Enter an image tag or a complete digest beginning with sha256:."},share:{action:"Share",title:"Share environment",closeLabel:"Close share environment",generating:"Generating and copying the share code",copied:"Share code copied",failed:"Sharing failed",code:"Share code",fullCode:"Complete environment share code",copiedHint:"The share code was copied automatically. You can also view or copy it here.",copyFailedHint:"Automatic copy failed. Copy the share code above manually or try again.",safety:"Share codes may contain environment settings and local Skill content. Send them only to trusted recipients.",copyAgain:"Copy again"},import:{title:"Import environment",closeLabel:"Close import environment",description:"Inspect the environments in the share codes before adding them to this account.",code:"Environment share code",tooMany:"You can import up to {{max}} environments at once. {{count}} share codes were found.",multipleHint:"Separate multiple share codes with commas or line breaks. Duplicates are ignored automatically.",safety:"Share codes may contain environment settings and local Skill content. Import them only from trusted sources.",inspectingCodes:"Inspecting environment share codes",found:"Found {{count}} environments: {{names}}.",itemError:"Share code {{index}}: {{error}}",invalidCode:"Invalid share code.",noResult:"The service returned no import result for this share code.",partial:"Imported {{created}} environments; {{remaining}} remain. Valid failed items can be retried.",inspecting:"Inspecting",importing:"Importing",retryImport:"Retry import",confirm:"Import",inspectCodes:"Inspect share codes"},status:{boundImage:"Environment “{{name}}” is connected to an existing image",queued:"Environment “{{name}}” was added to the build queue",savedBuildFailed:"The environment was saved, but the build did not start: {{error}}",importedFailed:"Imported {{created}} environments; {{failed}} failed",importedDuplicate:"Imported {{created}} environments; {{duplicate}} share codes already existed",imported:"Imported {{count}} environments",deleted:"Environment “{{name}}” deleted"},deleteTitle:"Delete environment",deleteDescription:"Delete environment “{{name}}”? This cannot be undone.",errors:{repositoryRequired:"Enter a public code repository URL.",repositoryHttps:"Enter the HTTPS URL of a public repository.",repositoryInvalid:"Enter a valid public repository HTTPS URL.",imageReferenceWhitespace:"A tag or digest cannot contain spaces.",imageDigestInvalid:"The digest must be a complete sha256 value.",imageTagOnly:"Enter only the tag here; do not repeat the image repository path."}},Bhe={searchPlaceholder:"Search resource names",emptyMessage:"No options available",searchAriaLabel:"Search {{label}}",loadingMore:"Loading more resources…"},Uhe={retryDeployment:"Retry deployment",retrying:"Retrying…",collapse:"Collapse error details",expand:"Expand full error details",copy:"Copy full error details"},Qhe={steps:"Build steps",log:"Build log",syncing:"Syncing",loadFailed:"Failed to load",synced:"Synced",recentOnly:" · Recent logs only",copiedLog:"Build log copied",copyLog:"Copy build log",copied:"Copied",copy:"Copy",logContent:"Build log content",waiting:"Waiting for CodePipeline logs…",empty:"No build logs"},zhe={defaultLabel:"Studio default environment",defaultDescription:"Use the standard runtime environment provided by Studio",status:{notBuilt:"Not built",preparing:"Preparing",queued:"Queued",building:"Building",scanning:"Scanning",available:"Available",failed:"Failed"},label:"Runtime environment",placeholder:"Select a runtime environment",search:"Search runtime environments",loading:"Loading runtime environments…",loadFailed:"Failed to load runtime environments",noMatches:"No matching runtime environments",unavailable:"No runtime environments are currently available",selectionUnavailable:"The selected runtime environment is unavailable. Select another one.",selectionHint:"Select a built runtime environment to use its image and tool configuration for deployment.",versionChanged:"The selected environment version has changed. Review it before continuing.",versionMissing:"The selected environment version no longer exists. Select another one.",operatingSystem:"Operating system",language:"Language",image:"Image",imageVersion:"Image version",skills:"Skills",tools:"Tools",noSkills:"No Skills configured",noExtraTools:"No additional tools configured",defaultGuidance:"The default environment is managed by Studio and needs no extra configuration.",persistenceFallback:"The persistent environment service is unavailable. The default environment is being used.",emptyFallback:"No custom environments are available."},Vhe={repository:"GitHub repository",githubUrl:"GitHub URL",token:"Token",sessionToken:"{{provider}} Session Token",runtime:"Runtime",commit:"Commit",workflow:"Workflow",syncFailed:"Failed to sync GitHub code",status:{mounted:"Mounted",bound:"Bound",synced:"Synced",created:"Created"},volcengine:"Volcengine",mountDelivery:"Enable continuous delivery",selectedForDeployment:"Selected for deployment",mountOnDeploy:"Enable continuous delivery on deploy",syncCode:"Sync code",deliveryMode:"GitHub delivery mode",sourceSync:"GitHub code sync",delivery:"GitHub delivery",loading:"Loading",running:"Running",runtimeDeliveryHint:"Write an AgentKit Runtime GitHub Actions workflow so future GitHub commits update the bound Runtime.",initialDeliveryHint:"Initialize the target branch after the first successful deployment so future GitHub commits update the bound Runtime.",sourceSyncHint:"Studio pushes directly to the target branch. Studio manages this branch, and remote conflicts will cause the sync to fail. Use the deployment button to publish the Runtime.",tokenPlaceholder:"repo or contents:write permission",getToken:"Get token",hideToken:"Hide token",showToken:"Show token",tokenHelp:"The token is used only for this operation and is cleared from the form after success.",targetBranch:"Target branch",actionsSecretPlaceholder:"Used to write a GitHub Actions secret",sessionTokenPlaceholder:"Optional temporary credential",syncing:"Syncing…",pendingHint:"Continuous delivery is selected. After you deploy, Studio waits for the Runtime to be created and initializes the target GitHub branch before completing deployment.",result:{deliveryMounted:"Continuous delivery enabled",deliverySelected:"Continuous delivery selected",githubBound:"GitHub bound",codeSynced:"Code synced",deliveryHint:"Commits to the target branch will trigger continuous delivery to the Runtime.",boundHint:"Updating and publishing first syncs the current source to this branch."},branch:"Branch",viewPr:"View PR",createFailed:"Creation failed",phase:"Phase",log:"Log"},Hhe={name:"Feishu",enabling:"Enabling and updating configuration…",description:"Receive messages and reply through a Feishu bot",configuration:"Feishu configuration",configurationMode:"Feishu configuration mode",automatic:"Automatic",manual:"Manual",cancelling:"Cancelling…",scanToCreate:"Scan to create",scanDescription:"Credentials are filled in after authorization",generateQrCode:"Generate QR code",qrCodeAlt:"Feishu bot configuration QR code",scanToConfirm:"Scan with Feishu to confirm",expiresIn:"Expires in {{time}}",created:"Bot created",credentialsFilled:"App credentials filled in automatically",qrCodeExpired:"QR code expired",automaticFailed:"Automatic configuration failed",regenerateQrCode:"Generate a new QR code.",configuredPlaceholder:"Configured; leave blank to keep it",appSecretPlaceholder:"Enter App Secret",hideSecret:"Hide App Secret",showSecret:"Show App Secret"},qhe={mode:{auto:"Create automatically",autoDescription:"Create required resources during deployment",recommended:"Recommended",create:"Specify names",createDescription:"Create or reuse resources with the specified names",existing:"Select existing",existingDescription:"Select existing resources from the current account"},selectExisting:"Select an existing resource",searchResource:"Search resource names",noMatch:"No matching resources",noAvailable:"No resources available",searching:"Searching cloud resources…",loading:"Loading cloud resources…",noMatchSentence:"No matching resources.",noAvailableSentence:"No resources available.",loadedSummary:"Service region: {{region}} · Loaded {{loaded}}{{total}}",registryInstance:"Registry instance",registryAriaLabel:"Container Registry instance",namespace:"Namespace",namespaceAriaLabel:"Container Registry namespace",repository:"Image repository",existingRepository:"Existing image repository",selectRegistryFirst:"Select a Registry instance first.",selectNamespaceFirst:"Select a Namespace first.",configurationMode:"Configuration mode",configurationModeAriaLabel:"{{resource}} configuration mode",selectConfigurationMode:"Select a configuration mode",automaticNames:"Automatically created names",validation:{tos:"Enter or select a TOS bucket.",cr:"Enter or select a CR instance, namespace, and image repository.",codePipeline:"Enter or select a CodePipeline Workspace and Pipeline.",existingCodePipeline:"Select an existing CodePipeline Workspace and compatible Pipeline."},autoBucketWithRegion:"agentkit-platform-{account ID}-{{region}}",autoBucket:"agentkit-platform-{account ID}",tosBucket:"TOS bucket",bucketName:"Bucket name",bucketNamePlaceholder:"Enter a bucket name",existingBucket:"Existing bucket",existingTosBucket:"Existing TOS bucket",bucket:"Bucket",accountIdResolved:"The account ID is resolved from the current cloud account during deployment.",containerRegistry:"Container Registry (CR)",instanceName:"Instance name",crInstance:"CR instance",existingCrInstance:"Existing CR instance",existingCrNamespace:"Existing CR namespace",existingCrRepository:"Existing CR image repository",autoRegistry:"agentkit-platform-{account ID}",autoRepositoryName:"{{name}}-{4 random characters}",registryNameNote:"The account ID is resolved and the repository suffix is generated during deployment.",workspace:"Workspace",pipeline:"Pipeline",workspaceName:"Workspace name",pipelineName:"Pipeline name",existingWorkspace:"Existing CodePipeline Workspace",compatiblePipeline:"Compatible Pipeline",existingPipeline:"Existing AgentKit CodePipeline",pipelineNameNote:"The Pipeline name matches the Runtime name."},Whe={commit:"Commit",steps:{permissions:"Preflight OTA permissions",resolving:"Resolve target version",downloading:"Download and verify the full update package",preparing:"Prepare VeFaaS Function code",provisioning:"Check and provision Studio cloud resources",scheduler:"Update the scheduled task service",submitting:"Submit the Function update",publishing:"Publish a new Revision and restart the service"},stages:{permissions:"Preflight OTA permissions",resolving:"Resolve version details",downloading:"Download update package",preparing:"Prepare Function code",provisioning:"Provision Studio cloud resources",scheduler:"Update scheduled task service",submitting:"Submit Function update",publishing:"Publish Revision",checking:"Check for updates",unknown:"Unknown stage"},duration:{seconds:"{{count}} seconds",minutesSeconds:"{{minutes}} min {{seconds}} sec"},logPermissionPrefix:"Unable to read VeFaaS release logs. The Function role lacks ",logPermissionSuffix:"; the update will continue.",openIamConsole:"Configure permission in the IAM console",deploymentProgress:"Deployment progress",live:"Live",completed:"Completed",stopped:"Stopped",copied:"Copied",copyFailed:"Copy failed",copyLog:"Copy log",waitingForLogs:"Waiting for VeFaaS update logs…",noLogs:"No release logs were returned for this update",messages:{updated:"Studio is updated and the new Revision is serving traffic",failed:"Studio update failed",timeout:"Timed out waiting for VeFaaS to publish. Check for updates again later.",submitted:"Update submitted. Waiting for VeFaaS to publish the new version.",connectionSwitched:"The connection changed. Confirming the new version status."},checkingPermissions:"Checking OTA permissions",authorizationRequired:"IAM authorization required",updating:"Updating Studio",updated:"Studio updated",updateToVersion:"Update Studio to {{version}}",checkPermissions:"Check update permissions",authorizationNeeded:"Authorization required",updatingShort:"Updating",refreshForNewVersion:"Refresh to use the new version",updateFailed:"Update failed",updateNow:"Update now",newVersionAvailable:"New version available",dialog:{failed:"Studio update failed",checkingPermissions:"Checking update permissions",authorizationRequired:"IAM authorization required",updating:"Updating Studio",completed:"Studio update complete",newVersion:"New version available"},permissionCheck:"Checking every IAM permission required by OTA and scheduled tasks…",permissionCheckHint:"Downloads and cloud-resource updates begin only after all permissions are available.",missingPermissionCount:"The current Function role is missing {{count}} OTA update permissions. No cloud resources have been changed.",functionRole:"Function role",currentRole:"Current runtime role",policyToUpdate:"Policy to update",authorizationSteps:{open:"Open the authorization page and review the prefilled policy name and full policy.",debug:"Select “Start debugging” on the page to apply the policy update.",return:"Return to this window and select “Authorized, check again”."},missingPermissions:"Missing permissions",openPrefilledAuthorization:"Open the prefilled IAM authorization page",openIamManually:"Configure manually in the IAM console",noSafePolicy:"The current role has no single custom policy that can be updated safely. Ask an administrator to add the permissions above to this role.",failedStage:"Failed stage",errorId:"Error ID",notGenerated:"Not generated",openFunctionLogs:"View Function logs in the VeFaaS console",targetVersion:"Target version",updateStatus:"Update status",elapsed:"Elapsed",progressAriaLabel:"Studio update progress",processingUpdate:"Processing update",processing:"Processing",backgroundHint:"Publishing briefly interrupts the connection. Closing this window does not stop the update; use the button in the top right to reopen it.",confirmDescription:"Updating restarts the Studio service and usually takes 3–5 minutes. Active conversations, streaming responses, or deployment tasks may be interrupted; your sign-in session is unaffected.",selectVersion:"Select version",currentVersion:"Current version",changelog:"What's new",noChangelog:"No release notes",runInBackground:"Run in background",authorizedRecheck:"Authorized, check again",tryAgain:"Try again"},Khe={deploy:"Deploy",update:"Update",planHash:"Plan hash",backToConfiguration:"Back to configuration",releaseRegion:"Release region",deployRegion:"Deployment region",regionPreserved:"The existing Runtime deployment region is preserved during updates and cannot be changed.",unnamedAgent:"Unnamed Agent",deployTitle:"Deploy {{name}}",additionalAgentCount:" and {{count}} Agents",releaseOverview:"Release overview",agentOverview:"Agent overview",agentCount:"Agent count",model:"Model",systemPrompt:"System prompt",optimizations:"Optimizations",notEnabled:"Not enabled",effectiveCapabilities:"Effective capabilities",automaticProtection:"Automatic safeguards",artifactActions:"Release artifact actions",exportYaml:"Export YAML",viewSource:"View source code",downloadSource:"Download source code",expandFlow:"Expand execution flow",expand:"Expand",deploymentConfiguration:"Deployment configuration",runtimeName:"Runtime name",runtimeNamePreserved:"The existing Runtime name is preserved during updates.",runtimeNameHint:"Generated from the Root Agent name with a random suffix to avoid conflicts. Use 4–64 letters, numbers, hyphens, or underscores.",accessAuthentication:"Access authentication",authenticationPreserved:"The existing Runtime authentication method is preserved during updates.",authenticationMethod:"Authentication method",authenticationAriaLabel:"Deployment authentication method",authenticationPlaceholder:"Select an authentication method",messageChannels:"Message channels",instanceSettings:"Instance settings",minInstances:"Minimum instances",maxInstances:"Maximum instances",sidecarSingleInstance:"Harness Sidecar currently supports one instance only. The Runtime is fixed at 1–1.",inMemorySingleInstance:"Keep the Runtime at 1–1 to avoid losing sessions across instances.",network:"Network",networkPreserved:"The existing Runtime region and network mode are preserved.",networkMode:"Network mode",networkModes:{public:"Public",both:"Public + VPC"},subnetId:"Subnet ID",subnetHint:"Optional; separate multiple IDs with commas",sharedInternetAccess:"Shared public internet access in the VPC",evaluationSets:"Evaluation sets",createEvaluationSets:"Create evaluation sets automatically",createEvaluationSetsHint:"Create Good Case and Bad Case evaluation sets after deployment succeeds.",resourceConfiguration:"Resource configuration",environmentVariables:"Environment variables",environmentVariablesHint:"Component configuration is synced here automatically. Review the final values before deployment.",itemCount:"{{count}} items",addVariable:"Add variable",componentGenerated:"Generated from components",injectedByApiKey:"Injected from the selected API key",envNameAriaLabel:"{{key}} environment variable name",envDescriptionAriaLabel:"{{key}} description: {{description}}",openOpenViking:"Open OpenViking {{label}}",openOpenVikingAriaLabel:"{{key}}: open OpenViking {{label}}",requiredEmpty:"Required; no value entered",optionalEmpty:"Optional; no value entered",envValueAriaLabel:"{{key}} environment variable value",automatic:"Automatic",synced:"Synced",customModelCredentials:"Custom model credentials",releaseOnlySecret:"Required; used only for this release",thisRelease:"This release",customVariables:"Custom variables",value:"Value",deleteVariable:"Delete variable",deploymentProgress:"Deployment progress",retryUpdate:"Retry update",retryDeploy:"Retry deployment",updateSucceeded:"Update succeeded",deploySucceeded:"Deployment succeeded",region:"Region",agentName:"Agent name",apiEndpoint:"API endpoint",connecting:"Connecting…",chatNow:"Chat now",console:"Console",actionInProgress:"{{action}} in progress…",checkingName:"Checking name…",retryAction:"Retry {{action}}",flowPreview:"Execution flow preview",executionFlow:"Execution flow",flowPreviewHint:"Read-only preview; zoom and pan the canvas",closeFlowPreview:"Close execution flow preview",agentAdded:'Agent "{{name}}" was added to the selector in the top left.',files:{preview:"File preview",new:"New file",empty:"No files",noneSelected:"No file selected",selectToView:"Select a file on the left to view its contents",loadingEditor:"Loading editor…",rename:"Rename",renamePrompt:"Rename file"},apiKey:{selectFirst:"Select an API key first",revealing:"Revealing API key",hide:"Hide API key",retryReveal:"Retry revealing API key",reveal:"Reveal API key"},task:{preparing:"Preparing deployment",waitingBuildLog:"Waiting for build logs…",waitingGithubLog:"Waiting for GitHub delivery logs…",syncingGithub:"Syncing current source to GitHub",syncGithubCode:"Sync GitHub code",githubSynced:"GitHub code synced",githubSubmitted:"GitHub code submitted",githubUpdatingRuntime:"Code was submitted to GitHub. GitHub Actions is updating the same Runtime.",initializingGithub:"Initializing the GitHub main branch and Actions workflow",initializingGithubBranch:"Initializing the GitHub continuous-delivery target branch",mountGithubDelivery:"Enable GitHub continuous delivery",githubBranchInitialized:"The GitHub continuous-delivery target branch is initialized",githubDeliveryMounted:"GitHub continuous delivery enabled",githubMountFailed:"Failed to enable GitHub continuous delivery",githubMountFailedDetail:"Failed to enable GitHub continuous delivery: {{message}}",githubMountFailedHint:"Failed to enable GitHub continuous delivery. See the GitHub log for details.",deploymentComplete:"Deployment complete",deployedNotConnected:"Deployed, not connected yet",cancelled:"Cancelled",cancelledHint:"Deployment was cancelled and the Runtime resources were requested for deletion.",deploymentStatusUnconfirmed:"Deployment status unconfirmed",deploymentFailed:"Deployment failed",buildFailedHint:"Image build failed. See the build log for details."},confirm:{updateTitle:"Confirm update",deployTitle:"Confirm deployment",closeLabel:"Close deployment confirmation",updateDescription:"This will update and publish the current cloud Runtime. It may take a few minutes. Continue?",deployDescription:"This will create a new cloud Runtime. Deployment may take a few minutes. Continue?",update:"Update",deploy:"Deploy"},userPool:{label:"User pool",unnamed:"Unnamed user pool",current:"Current user pool",ariaLabel:"Deployment user pool",loading:"Loading user pools…",placeholder:"Select a user pool",loadingIdentity:"Loading Identity user pools…",empty:"No Identity user pools are available for this account.",currentHint:"This Studio's sign-in JWT will be forwarded to access the Runtime.",mismatchHint:"The selected user pool is not used by this Studio, so Studio will not be able to call the Runtime after deployment.",markedHint:"The user pool used by this Studio is marked in the list."},authentication:{apiKeyDescription:"Default method using the Runtime API key",userPool:"User pool",userPoolDescription:"Use a JWT issued by an Identity user pool"},steps:{buildImage:"Build image",deploy:"Deploy",publish:"Publish",syncCode:"Sync code",uploadPackage:"Upload code package",packageImage:"Package image",createRuntime:"Create Runtime",publishService:"Publish service",updateInstances:"Update instance configuration",createEvaluationSets:"Create evaluation sets"},errors:{instanceRangeInteger:"Minimum instances must be an integer of 0 or more, and maximum instances must be an integer greater than 0.",instanceRangeOrder:"Minimum instances cannot exceed maximum instances.",selectApiKey:"Select an API key in the model configuration first.",loadApiKey:"Failed to load the API key. Try again.",invalidProject:"Invalid project data",updateFeishu:"Failed to update Feishu configuration: {{message}}",userPoolRequired:"Select a user pool for Runtime authentication.",vpcRequired:"Enter a VPC ID when using a VPC network.",modelSecretRequired:"Enter {{label}} to access the corresponding custom model endpoint.",managedApiKeyRequired:"{{requirement}}. Return to model configuration and select an API key first.",feishuEnvRequired:"Enter {{field}} after enabling Feishu.",runtimeNameExists:"This Runtime name already exists. Change it and try again.",deployedButGithubMountFailed:"Deployment succeeded, but enabling GitHub continuous delivery failed: {{message}}",deployedButGithubBindFailed:"Deployment succeeded, but binding GitHub failed: {{message}}",deploymentStatusUnconfirmed:"The connection was interrupted, so the final deployment status cannot be confirmed. The task may still be running in the cloud. Check the same task in AgentKit or CodePipeline and avoid a duplicate deployment.",failedAtStage:"{{action}} failed during {{stage}}: {{message}}",noAgentAtEndpoint:"Connected successfully, but no Agents were found at this endpoint (/list-apps is empty).",addAgent:"Failed to add Agent: {{message}}",modelApiKeyRequired:"Enter the API key for this model endpoint."}},Ghe={title:"Workspaces",detail:"Workspace details",create:"New workspace",editorDescription:"Group frequently used environments. An environment can belong to multiple workspaces.",backToList:"Back to workspaces",environmentCount_one:"{{count}} environment",environmentCount_other:"{{count}} environments",createdAt:"Created",updatedAt:"Last updated",basicInfo:"Basic information",namePlaceholder:"For example: Content production",descriptionPlaceholder:"Describe what this workspace is for",selectedEnvironmentCount:"{{count}} selected; they can also be reused in other workspaces",searchAvailableEnvironments:"Search available environments",searchEnvironments:"Search environments",noAvailableEnvironments:"No environments are available to add",createEnvironmentFirst:"Create and build an environment on the Environments page first.",noMatchingEnvironments:"No matching environments",tryAnotherName:"Try searching for another name.",environmentStatus:{available:"Available",building:"Building",notBuilt:"Not built"},added:"Added",saved:"Workspace “{{name}}” saved",resourceType:"Workspace resource type",searchWorkspaces:"Search workspaces",loadFailed:"Unable to load workspaces",noMatchingWorkspaces:"No matching workspaces",tryAnotherNameOrEnvironment:"Try another name or environment",noEnvironmentAdded:"No environments added",environmentMissing:"Environment missing",availableFraction:"{{available}}/{{total}} available",available:"Available",availableCount:"{{count}} available",updated:"Updated",addEnvironment:"Add environment",deleteTitle:"Delete workspace",deleteDescription:"Delete workspace “{{name}}”? Its environments will not be deleted.",deleted:"Workspace “{{name}}” deleted",clipboardPermissionError:"Could not read the clipboard. Allow clipboard access, or open Import environment and paste the share code manually.",clipboardUnsupported:"This browser cannot read the clipboard automatically. Open Import environment and paste the share code manually.",codeProjects:"Code projects"},Xhe={back:"Back",detailNavigation:"Detail navigation",noData:"No data",actions:"Actions",moreActions:"More actions for {{label}}",actionsFor:"Actions for {{label}}",loading:"Loading resources…"},Yhe={addSkill:"Add Skill",remove:"Remove {{name}}",confirmRemoveRuntime:"Remove the running Skill “{{name}}” from the new version?",selectedCount:"Added skills · {{count}}",close:"Close {{label}}",sources:{runtime:"Running source · Preserved as-is; remove it or replace it with a Skill of the same name",local:"Local",skillspace:"AgentKit Skills Center",skillhub:"Volcengine Find Skill marketplace"},tabs:{local:"Local files",localShort:"Local files",skillspace:"AgentKit Skills Center",skillspaceShort:"AgentKit",skillhub:"Volcengine Find Skill marketplace",skillhubShort:"Find Skill"}},Zhe={tasks:{ppt:"Presentation",image:"Image generation",video:"Video generation"},prompts:{ppt:{quarterlyReview:"Review 【quarter】 business performance, highlighting metric gaps, causes, and recommended actions",projectUpdate:"Present the progress of 【project name】: milestones, risks, budget, and resource requests",solutionProposal:"Create a solution proposal for 【customer industry】: pain points, architecture, implementation plan, and benefits",industryAnalysis:"Analyze trends in 【industry topic】 and recommend strategic opportunities based on the competitive landscape"},image:{launchVisual:"Design a 【high-tech】 launch-event key visual for 【brand or product】",ecommercePoster:"Create an e-commerce poster for 【product name】 that highlights 【core selling point】 and brand colors",conceptRendering:"Create a photorealistic concept rendering of 【product or space】 in 【usage scenario】",socialGraphic:"Create a concise, professional corporate social graphic for 【campaign theme】"},video:{brandFilm:"Create a 30-second promotional video for 【brand name】 that highlights 【brand value】",productLaunch:"Create a 45-second launch video for 【product name】 covering the pain point, features, scenarios, and call to action",trainingVideo:"Create a corporate training video about 【training topic】 that clearly explains 【key procedure or policy】",eventTeaser:"Create a 20-second teaser for 【event name】 with highlights, time and location, and registration details"}},firstFrame:"First frame",videoToEdit:"Video to edit",baseVideo:"Base video",optimizeSkillPlaceholder:"Describe the skill you want to improve…",createSkillPlaceholder:"Describe the skill you want to create…",createVideoPlaceholder:"Describe the video you want to create…",messageAgentPlaceholder:"Message {{name}}…",selectAgentFirst:"Select an agent first",selectSkillFirst:"Select the Skill you want to improve first",availableSkills:"Available skills",availableSubagents:"Available sub-agents",invokeSkill:"Use a skill",useSubagent:"Use a sub-agent",loadingCapabilities:"Loading Agent capabilities…",noMatchingSkills:"No matching skills for this Agent",noMatchingSubagents:"No matching sub-agents for this Agent",skillFallbackDescription:"Load and run this skill",agentFallbackDescription:"Hand this turn to the Agent",skill:"Skill",uploadImage:"Upload image",uploadDocument:"Upload document or PDF",uploadVideo:"Upload video",taskMode:"Task mode",selectTaskMode:"Select a task mode",loadingGenerationModel:"Loading generation model",modelUnavailable:"Model unavailable",cancelTask:"Cancel {{task}} task",stopGenerating:"Stop generating",viewVideoProgress:"View video generation progress",send:"Send",selectTaskType:"Select a task type",enterprisePrompts:"{{task}} enterprise prompts",sessionId:"Session ID",sessionIdLabel:"Session ID: ",initializing:"Initializing",copied:"Copied",copySessionId:"Copy session ID",sessionIdCopied:"Session ID copied",disclaimer:"Responses may be inaccurate",viewLogs:"View logs"},Jhe={selectAgent:"Select Agent",noLocalAgents:"No local Agents.",searchRuntime:"Search Runtime names",mineOnly:"Created by me",noRuntimes:"No Runtimes.",unsupported:"Unsupported",createdByMe:"Created by me",connecting:"Connecting…",connected:"Connected",connect:"Connect",viewInfoFor:"View information for {{name}}",viewInfo:"View information",agentAndRuntimeInfo:"Agent and Runtime information",detailType:"Detail type",agentInfo:"Agent information",runtimeInfo:"Runtime information",loadingAgentInfo:"Loading Agent information…",cannotLoadAgentInfo:"Agent information is temporarily unavailable",unnamedAgent:"Unnamed Agent",subagents:"Sub-agents",tools:"Tools",skills:"Skills",previewUnsupported:"Preview unavailable",mountedComponents:"Mounted components",noMoreAgentInfo:"No additional Agent configuration information.",local:"Local",model:"Model",status:"Status",memoryMb:"Memory {{value}} MB",instances:"Instances {{min}}–{{max}}",resources:"Resources",version:"Version",loadingDetails:"Loading details…",environmentVariables:"Environment variables",errors:{notFound:"This Runtime no longer exists or the list is out of date. Refresh the list and try again.",accessDenied:"This account cannot access the Runtime. Check its Project and access permissions.",previewUnsupported:"This Agent Server version does not support information previews.",unavailable:"This Runtime is temporarily unavailable. Confirm that its status is Ready and try again.",timeout:"Loading timed out. Try again."},componentKinds:{knowledgebase:"Knowledge base",memory:"Memory",prompt_manager:"Prompt manager",example_store:"Example store",run_processor:"Run processor",tracer:"Trace",toolset:"Toolset",plugin:"Plugin",other:"Other"},runtimeStatus:{ready:"Ready",unreleased:"Unreleased",running:"Running",active:"Running",creating:"Creating",pending:"Pending",deploying:"Deploying",updating:"Updating",failed:"Failed",error:"Error",stopping:"Stopping",stopped:"Stopped",deleting:"Deleting",deleted:"Deleted"}},epe={agent:"Agents",agentTypes:{general:"General Agents",codex:"Codex","deepseek-harness":"DeepSeek",openclaw:"OpenClaw",hermes:"Hermes"},creator:"Created by",namedAgent:"{{name}} Agent",storageLocation:"Storage location",currentBrowser:"Current browser",region:"Region",viewDeploymentProgress:"View deployment progress for {{name}}",viewRuntimeDetails:"View Runtime details for {{name}}",viewDetails:"View details for {{name}}",time:"Time",remainingTime:"Time remaining",expiringSoon:"Expiring soon",sandboxRemaining:"{{hours}} hr {{minutes}} min",wakeable:"Asleep",neverExpires:"Never expires",editDraftNamed:"Edit draft {{name}}",viewProgress:"View progress",deleteDraftNamed:"Delete draft {{name}}",recheckCompatibility:"Check chat compatibility for {{name}} again",connectedNamed:"{{name}} is connected",wakeAndChat:"Wake {{name}} and start chatting",chatWith:"Chat with {{name}}",waking:"Waking…",deploying:"Deploying",draft:"Draft",checking:"Checking",chatUnsupported:"Chat unsupported",checkFailed:"Check failed",creatorFilter:"Creator filter",agentType:"Agent type",searchAgents:"Search Agents",handoff:"Handoff",agentList:"{{type}} list",noMatchingAgents:"No matching Agents",adjustSearch:"Try adjusting the search or filters",noAgentType:"No {{type}}",noGeneralAgents:"No General Agents",createGeneralAgentDescription:"Create a General Agent to start building and chatting",createAgentType:"Create {{type}}",createAgent:"Create Agent",loadingMore:"Loading more Agents",scrollForMore:"Scroll down to load more",allLoaded:"All Agents loaded",deleteDraftTitle:"Delete draft?",deleteDraftDescription:"“{{name}}” cannot be recovered after deletion.",deleteDraft:"Delete draft",loadGeneralAgents:"Load General Agents",loadAgentType:"Load {{type}}",compatibility:{checking:"Requesting Runtime /list-apps to confirm that this Agent supports Studio chat.",empty:"Runtime /list-apps returned no available Agents, so chat is currently unavailable.",supported:"This Runtime supports Studio chat.",unknownError:"The Runtime /list-apps request failed without a recognizable error."},sandboxStatus:{ready:"Ready",wakeable:"Asleep",creating:"Creating",starting:"Starting",initializing:"Starting",pending:"Pending",running:"Running",failed:"Error",error:"Error",stopped:"Stopped",expired:"Expired",deleting:"Deleting",deleted:"Deleted",unknown:"Unknown status"},wakingHint:"Waking the agent. This may take some time."},tpe={library:"Skill library",skill:"Skill",skills:"Skills",skillSpace:"Skill space",sandboxNotConfigured:"Dev Sandbox is not configured by an administrator",adminNotConfigured:"Not configured by an administrator",totalItems:"{{count}} items",cannotLoadSpaces:"Unable to load Skill spaces",someSpacesFailed:"Some Skill spaces failed to load",degradedRelationWarning:"Some relations are invalid. Readable skills have been restored.",downloadZip:"Download ZIP",optimize:"Optimize",closeSkillDetails:"Close Skill details",skillId:"Skill ID",allFiles:"All files",loadingSkillContent:"Loading Skill content…",noSkillContent:"This Skill has no SKILL.md content",addSkill:"Add Skill",localUpload:"Upload locally",localUploadDescription:"Select a ZIP file and upload it to the Skill space after validation",autoCreate:"Create automatically",autoCreateDescription:"Choose a model and style, then create a Skill through conversation",createSkill:"Create Skill",optimizeNamed:"Optimize {{name}}",deleteSkillConfirm:"Delete the entire Skill “{{name}}”? This affects every space that references it.",deleteSpaceConfirm:"Delete Skill space “{{name}}”? Make sure its Skills have been deleted first.",manageSpaceDescription:"Manage Skills in this space and create new versions",backToSpaces:"Back to Skill spaces",overview:"Overview",skillCount:"Skills",skillCountValue_one:"{{count}} Skill",skillCountValue_other:"{{count}} Skills",updatedAt:"Updated",skillsInSpace:"Skills in {{name}}",searchSkills:"Search Skills",cannotLoadSkills:"Unable to load Skills",noMatchingSkills:"No matching Skills",noSkills:"No Skills",tryAnotherName:"Try searching for another name",emptySkillsDescription:"Upload a Skill locally or create one automatically",actions:"Actions",spaceDetails:"Skill space details",editSpace:"Edit space",deleteSpace:"Delete space",searchSpaces:"Search Skill spaces",spaceList:"Skill space list",noMatchingSpaces:"No matching Skill spaces",createSpace:"Create Skill space",newSpace:"New space",loadingMoreSpaces:"Loading more Skill spaces",scrollForMore:"Scroll down to load more",allSpacesLoaded:"All Skill spaces loaded",errors:{loadSpaces:"Unable to load Skill spaces. Try again later.",loadSkills:"Unable to load Skills. Try again later.",loadSkillDetails:"Unable to load Skill details. Try again later.",deleteSkill:"Unable to delete the Skill",deleteSpace:"Unable to delete the Skill space",downloadSkill:"Unable to download the Skill"},status:{active:"Available",available:"Available",creating:"Creating",disabled:"Disabled",enabled:"Enabled",failed:"Error",inactive:"Inactive",pending:"Pending",published:"Published",ready:"Ready",released:"Published",running:"Running",success:"Healthy",unavailable:"Unavailable",unreleased:"Unreleased",updating:"Updating",unknown:"Unknown"},sharedSpace:"Enterprise shared space",sharedDescription:"Skills available to everyone, published and maintained by administrators",sharedVisibility:"Everyone",sharedPreparing:"Preparing shared space",sharedLoadFailed:"Shared space unavailable",sharedEmpty:"No shared skills yet. Skills published by administrators will appear here",requestPublication:"Request publication",reviewSubmitting:"Submitting…",reviewSubmitted:"Submitted",reviewFailed:"Could not submit the publication request",reviewStatusFailed:"Failed to load review status",reviewRetry:"Apply again",reviewPending:"Pending review",reviewApproving:"Publishing",reviewApproved:"Shared",reviewReturned:"Returned",reviewHistory:"Review history",skillDetailSections:"Skill detail sections",versions:{title:"Version management",refresh:"Refresh",uploading:"Uploading…",upload:"Upload new version",close:"Close",hint:"New versions become public after approval and do not replace published versions; the skill name in the ZIP must match the original",loading:"Loading versions…",loadFailed:"Unable to load versions",filesFailed:"Unable to load version files",uploadFailed:"Unable to upload the new version",submitFailed:"Unable to submit for review",retry:"Retry",empty:"No versions yet",current:"Current version",notSubmitted:"Not submitted",submitting:"Submitting…",submit:"Request publication",processing:"Version status: {{status}}",filesLoading:"Loading files…",filesEmpty:"No files",history:"Review history",shared:"Published"},author:"Author",authorName:"Author: {{name}}"},npe={library:"Knowledge bases",createBase:"New knowledge base",editBase:"Edit knowledge base",invalidName:"The name must start with a letter and contain only letters, numbers, and underscores.",nameHelp:"Start with a letter. Use up to 48 letters, numbers, or underscores.",optionalDescription:"Description (optional)",descriptionOnly:"AgentKit currently supports updating only the knowledge base description.",previewWeb:"Preview web content",addData:"Add data",openOriginalWeb:"Open original page",backToEdit:"Back to edit",confirmAdd:"Confirm and add",source:"Knowledge source",image:"Image",documentFile:"Document file",webPage:"Web page",webUrl:"Web page URL",generatingWebPreview:"Fetching the page and generating a Markdown preview",selectFile:"Select knowledge file",selectOrDropFile:"Select a file or drag it here",selectedFile:"{{size}} · Click to select another file",imageFileHelp:"PNG, JPG, and JPEG up to 200 MB",documentFileHelp:"PDF, PPTX, DOCX, XLSX, and TXT up to 200 MB",uploadingFile:"Uploading the file and adding it to the knowledge base",optionalName:"Name (optional)",optionalType:"Type (optional)",generatePreview:"Generate preview",uploadFile:"Upload file",editMetadata:"Edit knowledge metadata",knowledge:"Knowledge item",field:"Field",value:"Value",backToList:"Back to knowledge bases",metadataJson:"Metadata (JSON)",provider:"Provider",knowledgeId:"Knowledge ID",project:"Project",creator:"Created by",data:"Data",deleteInvalidAssociation:"Delete invalid association",noData:"This knowledge base has no data",addFirstData:"Add the first data item",format:"Format",size:"Size",searchData:"Search data",searchLibraryData:"Search knowledge base data",associationInvalid:"Association invalid",providerMissing:"The underlying Provider knowledge base no longer exists",noMatchingData:"No matching data",loadingMoreData:"Loading more data",retryLoading:"Retry loading",details:"Knowledge base details",searchBases:"Search knowledge bases",someBasesFailed:"Some knowledge bases are temporarily unavailable. Other available content is shown.",noMatchingBases:"No matching knowledge bases",noManagePermission:"You do not have permission to manage this knowledge base",loadingMoreBases:"Loading more knowledge bases",deleteBaseTitle:"Delete knowledge base?",deleteBaseDescription:"This removes the AgentKit association for {{name}}. If Studio created it, the Provider resource is also deleted. This cannot be undone.",deleteDocumentTitle:"Delete knowledge item?",deleteDocumentDescription:"This removes {{name}} from the Provider knowledge base. This cannot be undone.",preview:{processingTitle:"Data is being processed",processingDetail:"A preview will be available after parsing. Reload later.",failedTitle:"Data parsing failed",failedDetail:"Check the source file or page URL and add it again, or reload the latest status.",noParsedTitle:"No parsed content is available yet",noParsedDetail:"Text, tables, or page images will appear after the knowledge base finishes parsing this file.",noMediaTitle:"No media preview is available yet",noMediaDetail:"The knowledge base has not returned an accessible media preview. Reload later.",noDataTitle:"No data is available to preview",noDataDetail:"The knowledge base has not returned parsed results. Reload later.",attachmentError:"The attachment cannot be previewed. Try again later.",imageAlt:"Knowledge data image",audioUnsupported:"This browser does not support audio previews.",videoUnsupported:"This browser does not support video previews.",namedPdf:"{{name}} PDF preview",pdf:"PDF preview",openPdf:"If it cannot be displayed, open the PDF in a new window",fileUnsupported:"This format cannot be previewed directly online. Parsed content is shown when available.",openOriginalFile:"Open original file",loading:"Loading data preview",openOriginalHint:"You can open the original page to view the source content.",chunk:"Chunk {{index}}",loadingMore:"Loading more",loadMore:"Load more"},errors:{fileTooLarge:"A file cannot exceed 200 MB",invalidImageType:"Select a PNG, JPG, or JPEG image",invalidDocumentType:"Select a PDF, PPTX, DOCX, XLSX, or TXT file",createBase:"Unable to create the knowledge base",updateBase:"Unable to update the knowledge base",metadataObject:"Metadata must be a JSON object",metadataFormat:"Invalid metadata format",noWebPreview:"The page has no Markdown content to preview",addWeb:"Unable to add the web page",previewWeb:"Unable to generate the web page preview",uploadFile:"Unable to upload the file",updateDocument:"Unable to update the knowledge item",loadPreview:"Unable to load the data preview",loadMoreBases:"Unable to load more knowledge bases",loadBases:"Unable to load knowledge bases",loadMoreData:"Unable to load more data",loadData:"Unable to load data",deleteBase:"Unable to delete the knowledge base",deleteDocument:"Unable to delete the knowledge item"}},UUe={common:Dhe,agentKitPromo:Mhe,systemInfo:Lhe,agentWorkspace:$he,environmentCenter:Fhe,deploymentSelect:Bhe,deploymentError:Uhe,studioBuildProgress:Qhe,cloudEnvironment:zhe,githubCicd:Vhe,feishuDeployment:Hhe,deploymentResources:qhe,studioUpdate:Whe,projectPreview:Khe,workspace:Ghe,resourceCollection:Xhe,skillSourcePicker:Yhe,composer:Zhe,agentSelector:Jhe,myAgents:epe,skillCenter:tpe,knowledge:npe},QUe=Object.freeze(Object.defineProperty({__proto__:null,agentKitPromo:Mhe,agentSelector:Jhe,agentWorkspace:$he,cloudEnvironment:zhe,common:Dhe,composer:Zhe,default:UUe,deploymentError:Uhe,deploymentResources:qhe,deploymentSelect:Bhe,environmentCenter:Fhe,feishuDeployment:Hhe,githubCicd:Vhe,knowledge:npe,myAgents:epe,projectPreview:Khe,resourceCollection:Xhe,skillCenter:tpe,skillSourcePicker:Yhe,studioBuildProgress:Qhe,studioUpdate:Whe,systemInfo:Lhe,workspace:Ghe},Symbol.toStringTag,{value:"Module"})),ipe="User management",rpe="{{count}} members",spe="User",ope="Role",ape="Account status",lpe="Last sign-in",cpe="Actions",upe="Change role",dpe="Close",fpe="Save role",hpe="Saving…",ppe="Cancel",mpe="Back",gpe="User pool",bpe="Volcengine Identity",ype="Search name, email or user ID",vpe="Search",xpe="Filter by role",wpe="All roles",Ope="Refresh",kpe="Loading users…",Spe="Updated at {{time}}",Epe="{{name}} is now {{role}}",Cpe="Retry",Tpe="You",Ape="Initial super administrator",_pe="The initial super administrator cannot be demoted here",jpe="The new permissions apply when the user refreshes Studio",Npe="Role needs confirmation",Rpe="No matching users",Ipe="Try another search or role",Ppe="Users appear here after signing in or joining this user pool",Dpe="{{count}} users",Mpe="Previous",Lpe="Next",$pe="Not signed in yet",Fpe="Not provided",Bpe={super_admin:"Super administrator",admin:"Administrator",developer:"Developer",user:"User"},Upe={super_admin:"Manage all resources, users and role assignments",admin:"Manage Studio resources",developer:"Develop agents and manage your own resources",user:"Use agents and personal features"},Qpe={EXTERNAL_PROVIDER:"Active",CONFIRMED:"Active",NORMAL:"Active",ENABLED:"Active",ACTIVE:"Active",UNCONFIRMED:"Unverified",DISABLED:"Disabled",FORBIDDEN:"Disabled",LOCKED:"Locked",SUSPENDED:"Suspended",FORCE_CHANGE_PASSWORD:"Password change required"},zpe={request_failed:"The request did not finish. Refresh the list to confirm its current state before retrying",invalid_response:"The user service returned an invalid response. Refresh and try again",identity_unavailable:"Identity is unavailable. Try again later or check service permissions",identity_resource_missing:"The user or user pool no longer exists. Refresh the list",super_administrator_required:"Only super administrators can manage users",sign_in_required:"Sign in and try again",user_not_in_pool:"Your account does not belong to this user pool",user_disabled:"Your account is disabled",protected_administrator:"The initial super administrator cannot be demoted",cannot_demote_self:"You cannot demote your own super administrator role",role_change_conflict:"The role has changed. Close this dialog and refresh the list before retrying",cross_origin_request:"Change roles from the current Studio page"},zUe={title:ipe,memberCount:rpe,user:spe,role:ope,status:ape,lastLogin:lpe,actions:cpe,changeRole:upe,close:dpe,save:fpe,saving:hpe,cancel:ppe,back:mpe,pool:gpe,volcengineIdentity:bpe,searchPlaceholder:ype,search:vpe,filterRole:xpe,allRoles:wpe,refresh:Ope,loading:kpe,updatedAt:Spe,saved:Epe,retry:Cpe,you:Tpe,initialAdministrator:Ape,protectedExplanation:_pe,effectiveAfterRefresh:jpe,roleConflict:Npe,noUsers:Rpe,tryAnotherSearch:Ipe,poolEmpty:Ppe,resultCount:Dpe,previous:Mpe,next:Lpe,neverLoggedIn:$pe,unknown:Fpe,roles:Bpe,descriptions:Upe,states:Qpe,errors:zpe},VUe=Object.freeze(Object.defineProperty({__proto__:null,actions:cpe,allRoles:wpe,back:mpe,cancel:ppe,changeRole:upe,close:dpe,default:zUe,descriptions:Upe,effectiveAfterRefresh:jpe,errors:zpe,filterRole:xpe,initialAdministrator:Ape,lastLogin:lpe,loading:kpe,memberCount:rpe,neverLoggedIn:$pe,next:Lpe,noUsers:Rpe,pool:gpe,poolEmpty:Ppe,previous:Mpe,protectedExplanation:_pe,refresh:Ope,resultCount:Dpe,retry:Cpe,role:ope,roleConflict:Npe,roles:Bpe,save:fpe,saved:Epe,saving:hpe,search:vpe,searchPlaceholder:ype,states:Qpe,status:ape,title:ipe,tryAnotherSearch:Ipe,unknown:Fpe,updatedAt:Spe,user:spe,volcengineIdentity:bpe,you:Tpe},Symbol.toStringTag,{value:"Module"})),Vpe="Website integration",Hpe="Embed an AgentKit Runtime on your website as a floating chat window",qpe="Back to automations",Wpe="Add website",Kpe="Loading Runtime",Gpe="Select Runtime",Xpe="Website domain",Ype="For example, xxxx.com or localhost:5173",Zpe="Generating",Jpe="Generate token",eme="Added websites",tme="{{count}} website",nme="{{count}} websites",ime="Loading website integrations",rme="No website integrations yet",sme="Select a Runtime and enter a website domain to generate a token",ome="Embed instructions",ame="Place this code before the closing body tag on your website",lme="Copied",cme="Copy code",ume="Embed code will appear here after you add a website.",dme="Delete the website integration for {{domain}}?",fme={load:"Failed to load website integrations",create:"Failed to create website integration",delete:"Failed to delete website integration",noConversationalAgent:"No conversational Agent was found in this Runtime"},hme={requestFailed:"Request failed ({{status}})",greeting:"Hello. How can I help?",sessionFailed:"Could not start a chat session",unauthorized:"This website is not authorized to start a chat",conversationFailed:"The chat request failed. Try again shortly.",open:"Open Agent chat",close:"Close Agent chat",panelLabel:"Agent chat panel",assistant:"Agent assistant",online:"Online"},HUe={title:Vpe,description:Hpe,backToAutomations:qpe,addWebsite:Wpe,loadingRuntime:Kpe,selectRuntime:Gpe,websiteDomain:Xpe,domainPlaceholder:Ype,generating:Zpe,generateToken:Jpe,addedWebsites:eme,websiteCount_one:tme,websiteCount_other:nme,loadingIntegrations:ime,delete:"Delete",emptyTitle:rme,emptyDescription:sme,embedMethod:ome,embedInstructions:ame,copied:lme,copyCode:cme,embedHint:ume,confirmDelete:dme,errors:fme,widget:hme},qUe=Object.freeze(Object.defineProperty({__proto__:null,addWebsite:Wpe,addedWebsites:eme,backToAutomations:qpe,confirmDelete:dme,copied:lme,copyCode:cme,default:HUe,description:Hpe,domainPlaceholder:Ype,embedHint:ume,embedInstructions:ame,embedMethod:ome,emptyDescription:sme,emptyTitle:rme,errors:fme,generateToken:Jpe,generating:Zpe,loadingIntegrations:ime,loadingRuntime:Kpe,selectRuntime:Gpe,title:Vpe,websiteCount_one:tme,websiteCount_other:nme,websiteDomain:Xpe,widget:hme},Symbol.toStringTag,{value:"Module"})),pme={types:{all:"All types",document:"Documents",image:"Images",video:"Videos"},previewArtifact:"Preview {{name}}",moreActions:"More actions for {{name}}",actionMenu:"Actions for {{name}}",download:"Download",downloading:"Downloading",edit:"Edit details",delete:"Delete artifact",previewFailed:"Could not preview “{{name}}”: {{message}}",downloadStarted:"Download started for {{name}}",downloadFailed:"Could not download “{{name}}”: {{message}}",updated:"Updated {{name}}",deleted:"Deleted {{name}}",deleteFailed:"Could not delete “{{name}}”: {{message}}",typeFilter:"Artifact type",searchAria:"Search artifacts",searchPlaceholder:"Search artifacts or sessions",retry:"Retry",close:"Close",listAria:"Artifact list",loadFailed:"Could not load artifacts",loadDetailFallback:"Check the storage configuration and try again.",reload:"Reload",noMatch:"No matching artifacts",noArtifacts:"You do not have any artifacts yet",searchHint:"Try another search or artifact type",emptyHint:"Artifacts created in chats will appear here automatically",columns:{name:"Name",source:"Source",updatedAt:"Modified",actions:"Actions"},loadingMore:"Loading more artifacts",unknownTime:"Unknown time",preview:{close:"Close preview",meta:"{{type}} / Version {{version}}",loading:"Loading preview",alt:"Preview of {{name}}",loadFailed:"The preview could not be loaded. Try again later or download the file.",unsupported:"This format cannot be previewed online. Download the file to view it.",sourceAria:"Artifact source",agent:"Agent",session:"Session",tool:"Generated by",createdAt:"Created",fileSize:"File size",tags:"Tags",viewSession:"View session"},deleteDialog:{title:"Delete artifact?",description:"“{{name}}” will be permanently removed from the artifact library. The chat history will not be affected.",deleting:"Deleting",confirm:"Delete",close:"Close delete confirmation"},api:{withStatus:"{{message}} ({{status}})",listFailed:"Could not load the artifact library",syncFailed:"Could not sync chat artifacts",updateFailed:"Could not update the artifact",deleteFailed:"Could not delete the artifact",downloadFailed:"Could not download the artifact"}},mme={unknownSource:"Unknown source",unknownCreator:"Unknown creator"},gme={nameRequired:"Enter an artifact name",tooManyTags:"You can add up to {{max}} tags",tagTooLong:"Each tag can contain up to {{max}} characters",title:"Edit artifact details",subtitle:"The content file will not be modified",close:"Close edit dialog",name:"Name",description:"Description",descriptionPlaceholder:"Add its purpose, version, or usage notes",tags:"Tags",tagsPlaceholder:"Separate tags with commas, up to {{max}}",cancel:"Cancel",saving:"Saving",save:"Save"},bme={change:{added:"Added",modified:"Modified",deleted:"Deleted"},noChanges:"There are no source changes between these versions",chooseFile:"Select a file on the left to view its code",compareTitle:"Compare versions",workspaceTitle:"Source workspace",projectFallback:"Agent project",switchTheme:"Switch source theme",switchThemeTitle:"Switch to {{theme}} theme",themes:{dark:"dark",light:"light"},closeWorkspace:"Close source workspace",close:"Close",changedFiles:"Changed files",projectFiles:"Project files",changes:"Changes",files:"Files",openFiles:"Open files",noFileSelected:"No file selected",comparisonDirection:"Comparison direction",before:"Before optimization",after:"After optimization",loadingEditor:"Loading editor…",changedFileCount_one:"{{count}} file changed",changedFileCount_other:"{{count}} files changed",fileCount_one:"{{count}} file",fileCount_other:"{{count}} files",lineCount_one:"{{count}} line · UTF-8",lineCount_other:"{{count}} lines · UTF-8",viewSource:"View source",viewSourceAria:"View and edit project source"},yme={nav:"Search",selectAgent:"Select an Agent",checkingCapabilities:"Checking Agent capabilities",notMounted:"This Agent does not have {{label}} mounted",sources:{session:"Sessions",web:"Web",knowledge:"Knowledge base",memory:"Long-term memory"},webDescription:"Search with the web_search tool",backendLocal:"Local",failed:"Search failed: {{message}}",placeholder:{selectAgent:"Select an Agent first",web:"Search the web",knowledge:"Search {{name}}",knowledgeFallback:"this Agent's knowledge base",memory:"Search {{name}}",memoryFallback:"this user's long-term memory",session:"Search this Agent's sessions"},sourceTypeAria:"Search source: {{label}}",notSelected:"Not selected",sourceType:"Search source",selectSource:"Select a search source",noAgentHint:"Select an Agent to search its sessions, the web, and mounted data sources.",loadingCapabilities:"Loading this Agent's search capabilities…",sourceUnavailable:"This Agent does not have this data source mounted",instructions:{web:"Enter keywords and press Enter or select the button to search with web_search.",knowledge:"Enter a question to search this Agent's knowledge base.",memory:"Enter a clue to search long-term memories saved across this user's sessions.",session:"Enter keywords and press Enter or select the button to search this Agent's sessions."},noResults:"No results found for “{{query}}”.",knowledgeFragment:"Knowledge excerpt {{index}}",memoryFragment:"Memory excerpt {{index}}"},vme={title:"Developer Resources",sections:{documentation:{title:"Related links",description:"Open development documentation and common AgentKit destinations"},bestPractices:{title:"Best practices",description:"Learn from practical development, debugging, and deployment guidance"},showcases:{title:"Showcases",description:"Explore applications built with AgentKit"}},links:{veadkDocs:"VeADK documentation",cliDocs:"AgentKit CLI documentation",platformDocs:"AgentKit platform documentation",console:"AgentKit console"},articles:{veadkDevelopment:{title:"Develop and deploy an Agent with VeADK",description:"Build an Agent with VeADK and deploy it to AgentKit Runtime."},cliDevelopment:{title:"Develop and deploy an Agent with AgentKit CLI",description:"Create a project, debug an Agent, and deploy it with AgentKit CLI."},coverAlt:"Cover image for {{title}}"},showcases:{researchAssistant:{title:"Multi-agent research assistant",description:"Specialized Agents work together to research, analyze, and summarize findings."},multimodalAnalysis:{title:"Multimodal content analysis",description:"Understand images, documents, and video in a single session."},customerService:{title:"Customer service workspace",description:"Combine knowledge retrieval and tool calls to handle complex support requests."},webSearch:{title:"Web search Agent",description:"Search current web content and organize it into traceable answers."},a2uiApp:{title:"A2UI interactive app",description:"Let an Agent generate interactive interfaces as it works through a task."},previewAlt:"Interface preview for {{title}}"}},xme={title:"Library",untitledSession:"Untitled session",categoryAria:"Library categories",regionAria:"Region",tabs:{skills:"Skills",knowledge:"Knowledge",artifacts:"Artifacts"}},wme={title:"Manage Agents",subtitle:"Agents in AgentKit Runtime that you can manage",mainAgentOnly:"Only the main Agent is shown (control-plane information).",deleteConfirm:'Delete Agent "{{name}}"? Its Runtime will be permanently deleted.',regionFilterTitle:"Filter by region",regionFilterAria:"Region filter",regionAria:"Region",refresh:"Refresh",loading:"Loading…",empty:"You have not deployed any Agents.",connected:"Connected",connect:"Connect to this Agent",deleteRuntime:"Delete this Runtime",loadingDetail:"Loading details…",agentStructure:"Agent structure",secretHidden:"Sensitive value hidden. Select to reveal it.",revealSecret:"Show the value of {{key}}",fields:{model:"Model",description:"Description",status:"Status details",project:"Project",version:"Version",resources:"Resources",memory:"Memory",tool:"Tool",knowledge:"Knowledge",mcpToolset:"MCP Toolset",updatedAt:"Updated"},resource:{memory:"Memory {{value}} MB",instances:"Instances {{min}}-{{max}}",concurrency:"Concurrency {{value}}"},environmentVariables:"Environment variables",unnamed:"(Unnamed)"},Ome={mainAgent:"Main Agent",subAgent:"Sub-agent {{index}}",itemCount_one:"{{count}} item",itemCount_other:"{{count}} items",info:"Agent information",infoAndTopology:"Agent information and topology",loadingInfo:"Loading Agent information…",unnamedAgent:"Unnamed Agent",tools:"Tools",toolList:"Tool list",studioTool:"Studio Tool",removeTool:"Remove tool {{name}}",remove:"Remove",notConfigured:"Not configured",addStudioTool:"Add Studio tools",addStudioToolHere:"Add Studio tools to this chat",skills:"Skills",skillList:"Skill list",previewUnsupported:"Preview is not supported",sessionEnvironment:"Session environment",environment:"Environment",agentCanvas:"Agent canvas",topology:"Structure",viewCanvasFullscreen:"View Agent canvas in full screen",viewFullscreen:"View full screen",executionCanvas:"Agent execution canvas",fullscreenExecutionCanvas:"Full-screen Agent execution canvas",closeFullscreenCanvas:"Close full-screen canvas",close:"Close",capabilitiesSubtitle:"Capabilities and collaboration topology",closeInfo:"Close Agent information",infoUnavailable:"Agent information is temporarily unavailable."},kme={mountFailed:"Could not mount the environment",closeDialog:"Close environment dialog",addTitle:"Add environments",description:"Choose the Sandbox environments this Agent can use in the current session",closeAdd:"Close Add environments",searchAria:"Search environments",searchPlaceholder:"Search environment names or capabilities",availableAria:"Available environments and workspaces",loading:"Loading available environments…",noMatch:"No matching environments or workspaces",workspaces:"Workspaces",reuseAll:"Use every available environment in this workspace",availableEnvironmentCount_one:"{{count}} available environment",availableEnvironmentCount_other:"{{count}} available environments",selectWorkspace:"Select workspace {{name}}",environments:"Environments",includedByWorkspaces:"Included by workspace {{names}}",nameSeparator:", ",selectEnvironment:"Select environment {{name}}",selectedWorkspaceCount_one:"{{count}} workspace selected",selectedWorkspaceCount_other:"{{count}} workspaces selected",coveredEnvironmentCount_one:"{{count}} environment covered",coveredEnvironmentCount_other:"{{count}} environments covered",selectionSummary:"{{workspaces}}, {{environments}}",cancel:"Cancel",mounting:"Mounting…",confirm:"Add selected",mountedAria:"Mounted environments",environmentCount_one:"{{count}} environment",environmentCount_other:"{{count}} environments",removeWorkspace:"Remove workspace {{name}}",remove:"Remove",removeEnvironment:"Remove environment {{name}}",add:"Add environments",addMore:"Add more environments",addForSession:"Add environments to this session",loadingAvailable:"Loading available environments…",empty:"No AIO Sandbox environments are available."},Sme={loading:{searching:"Looking for an existing environment",creating:"Initializing environment",connecting:"Connecting to the environment"},initializationFailed:"AgentKit CLI environment initialization failed. Current status: {{status}}.",sessionExpired:"The AgentKit CLI session does not exist or has expired. Try again.",initializationTimeout:"AgentKit CLI environment initialization timed out. Try again later.",nonPersistent:"Non-persistent environment",recyclingHoursMinutes:"Environment reclaimed in {{hours}} hr {{minutes}} min",recyclingMinutes:"Environment reclaimed in {{minutes}} min",connectionError:`Could not connect to the Studio service because the server did not respond.
-Original error: {{message}}`,unavailable:"Connection unavailable",requestFailed:"AgentKit CLI request failed",retry:"Retry",terminalTitle:"AgentKit CLI terminal"},Eme={labels:{coding:"Coding",get_city_weather:"City weather",get_location_weather:"Location weather",web_fetch:"Fetch web content",studio_write_artifact:"Save session artifact"},closeDialog:"Close dialog",title:"Add Studio tools",description:"Studio BFF runs these tools for {{agentName}} in the current session. No Runtime installation is required.",close:"Close Add Studio tools",searchAria:"Search Studio tools",searchPlaceholder:"Search by name or tool ID",availableAria:"Available Studio tools",loading:"Loading Studio tools…",noMatch:"No matching Studio tools",remove:"Remove",add:"Add"},Cme={artifactLibrary:pme,resourceMetadata:mme,artifactEdit:gme,codeBrowser:bme,search:yme,developerResources:vme,library:xme,manageAgents:wme,agentTopology:Ome,sessionEnvironment:kme,agentKitCli:Sme,studioTools:Eme},WUe=Object.freeze(Object.defineProperty({__proto__:null,agentKitCli:Sme,agentTopology:Ome,artifactEdit:gme,artifactLibrary:pme,codeBrowser:bme,default:Cme,developerResources:vme,library:xme,manageAgents:wme,resourceMetadata:mme,search:yme,sessionEnvironment:kme,studioTools:Eme},Symbol.toStringTag,{value:"Module"})),Tme={requestFailed:"请求失败 ({{status}})",unknownError:"未知错误",contentTypeMissing:"Content-Type 缺失",response:"响应:{{response}}",fallbackWithDetail:"{{fallback}}:{{detail}}",fallbackWithHttpStatus:"{{fallback}}(HTTP {{status}})",nonJsonResponse:"{{fallback}}:服务端返回非 JSON 响应({{contentType}})"},Ame={unconfigured:"管理员未配置 AgentKit Dev Sandbox,请配置后再使用",invalidSession:"AgentKit CLI 返回了无效的 Session。",loadCapabilitiesFailed:"无法读取 AgentKit CLI 配置。",invalidCapabilities:"AgentKit CLI 返回了无效的配置状态。",listSessionsFailed:"无法读取 AgentKit CLI Session。",invalidSessionList:"AgentKit CLI 返回了无效的 Session 列表。",createSessionFailed:"无法创建 AgentKit CLI Session。",openSessionFailed:"无法打开 AgentKit CLI Session。",openTerminalFailed:"无法打开 AgentKit CLI 终端。",invalidTerminalUrl:"AgentKit CLI 返回了无效的终端地址。"},_me={cnBeijing:"华北 2(北京)",cnShanghai:"华东 2(上海)"},jme={runtimeUnsupported:"该 Runtime 暂不支持连接,请确认服务已正常运行。"},Nme={autoConfigureFailed:"飞书机器人自动配置失败"},Rme={actionFailed:"{{action}}失败",detail:"详细信息:{{detail}}",request:"请求:{{request}}"},Ime={persistentMemoryHint:"提示:会话已不存在。使用 in-memory 或 SQLite 短期记忆时,多实例、进程重启或滚动发布都可能导致会话丢失;建议改用基于数据库的持久化短期记忆存储。",unsupportedRouteHint:"提示:该 Runtime 未提供会话能力运行接口,可能是 Runtime 版本与当前 Studio 不兼容。",toolArgumentHint:"提示:模型生成的工具参数格式不完整,请重新发送一次。",resourceCollectionExpiredHint:"提示:本次资源清单已失效,请重新发送任务;系统会重新收集资源后再创建 Agent。",networkConfigurationHint:"提示:请稍后重试,查看 Runtime、模型或网关日志。",modelQuotaHint:"提示:模型当前触发了 TPM/RPM 配额限制,请稍后重试或提高模型配额。",rawResponseLabel:"原始响应:"},Pme={httpStatus:"HTTP 状态码:{{status}}",errorCode:"错误码:{{code}}",cloudResponseBody:`云端响应正文:
-{{body}}`,loadFailedWithDetail:"读取实例日志失败:{{detail}}",invalidFormat:"读取实例日志失败:服务返回格式无效"},Dme={untitledSession:"未命名会话",webUnavailable:"网络搜索接口未就绪(后端未启用 /web/search)。",webFailed:"网络搜索失败:{{message}}",webNotMounted:"当前 Agent 未挂载 web_search 工具。",knowledgeNotMounted:"该 Agent 未挂载知识库。",memoryNotMounted:"该 Agent 未挂载长期记忆。",knowledge:"知识库",longTermMemory:"长期记忆"},Mme={listSpacesFailed:"读取 Skill 空间失败",createSpaceFailed:"创建 Skill 空间失败",updateSpaceFailed:"更新 Skill 空间失败",deleteSpaceFailed:"删除 Skill 空间失败",uploadFailed:"上传 Skill 失败",validateFailed:"校验 Skill 失败",deleteFailed:"删除 Skill 失败",listFilesFailed:"读取 Skill 文件失败",downloadFailed:"下载 Skill 失败",sharedSpaceFailed:"共享空间加载失败",reservedSpaceName:"此名称由系统空间保留,请使用其他名称",reviewSpaceFailed:"待审核空间暂不可用",submitReviewFailed:"申请公开失败",listReviewsFailed:"加载审核申请失败",reviewFilesFailed:"加载提交文件失败",decideReviewFailed:"审批失败,请重试",listVersionsFailed:"无法加载技能版本",uploadVersionFailed:"上传技能新版本失败"},Lme={truncatedData:"{{data}}…(已截断,共 {{count}} 个字符)",incompleteEvent:"SSE 流在事件完整返回前已结束。原始数据:{{data}}",invalidEventJson:"无法解析 SSE 事件中的 JSON。原始数据:{{data}}"},$me={loadConfigNetworkFailed:"无法加载登录配置,请检查网络后重试。",configServiceFailed:"登录配置服务异常(HTTP {{status}}),请稍后重试。",invalidConfigResponse:"登录配置服务返回了无法解析的响应,请稍后重试。",serviceNetworkFailed:"无法连接身份服务,请检查网络后重试。",invalidServiceResponse:"身份服务返回了无法解析的响应,请稍后重试。",serviceFailed:"身份服务异常(HTTP {{status}}),请稍后重试。"},Fme={invalidToken:"GitHub Token 无效或没有仓库写入权限",notFound:"仓库、分支或文件不存在,或 Token 无权访问",rejectedCommit:"GitHub 拒绝了提交,请检查分支和文件状态",requestFailed:"GitHub 请求失败(HTTP {{status}})",networkFailed:"连接 GitHub 失败,请检查网络后重试",invalidRepositoryFormat:"GitHub Repo 格式应为 owner/repository",insecureRepositoryUrl:"仅支持安全的 github.com 仓库地址",unsafeProjectPath:"Agent 项目目录必须是仓库内的安全相对路径",tokenRequired:"GitHub Token 不能为空",invalidBaseBranch:"目标分支格式不正确",invalidPublishBranch:"发布分支格式不正确",noFiles:"没有需要提交的文件",missingBaseSha:"目标分支缺少有效 Git SHA",fileAlreadyExists:"目标仓库中已存在 {{path}},未覆盖现有文件",pathNotUpdatable:"目标路径 {{path}} 不是可更新的文件",invalidPullRequest:"GitHub 未返回有效的 Pull Request"},Bme={loadCapabilitiesFailed:"加载视频模型能力失败",uploadAssetFailed:"上传{{fileName}}失败",enhancePromptFailed:"提示词优化失败",createTaskFailed:"创建视频生成任务失败",getTaskFailed:"查询视频生成任务失败",downloadFailed:"下载生成视频失败"},Ume={listFailed:"加载网站集成失败",createFailed:"创建网站集成失败",deleteFailed:"删除网站集成失败"},Qme={loadFailed:"读取知识库失败",htmlHidden:"[HTML 内容已隐藏]",redacted:"[已脱敏]",depthTruncated:"[内容过深,已截断]",circularReference:"[循环引用]",diagnosticsUnavailable:"[诊断信息无法显示]",statusCode:"状态码:{{status}}",errorCode:"错误码:{{code}}",requestId:"请求 ID:{{requestId}}",diagnostics:"诊断:{{diagnostics}}",detail:"详情:{{detail}}",signInRequired:"请先登录后再访问知识库",forbidden:"你没有权限操作这个知识库",notFound:"知识库或知识内容不存在",conflict:"知识库当前状态不允许执行此操作",requestFailed:"知识库请求失败 ({{status}})"},zme={invalidName:"名称须为 1~128 个字符,不能包含控制字符、不可见格式字符或 < >。",renameProjectFailed:"修改项目名称失败",renameVersionFailed:"修改版本名称失败",invalidNameUpdateResponse:"名称更新响应与请求不一致,请刷新后重试。",invalidSourceSnapshot:"源码快照的响应格式无效。",invalidProjectList:"项目列表的响应格式无效。",invalidProjectVersion:"项目版本的响应格式无效。",loadProjectsFailed:"无法读取已保存项目",loadVersionsFailed:"无法读取项目版本",deleteVersionFailed:"删除项目版本失败",invalidDeleteVersionResponse:"删除项目版本的响应格式无效。",loadProjectSourceFailed:"无法读取项目源码",loadSnapshotFailed:"无法读取源码快照",restoreSnapshotFailed:"无法恢复当前源码快照",downloadSourceFailed:"下载源码失败",downloadNotZip:"源码下载响应不是 ZIP 文件。",downloadSizeMismatch:"源码压缩包大小与发布记录不一致,请重试。"},Vme={invalidFormat:"{{label}}格式错误。",validationSeparator:";",invalidAnalysisResult:"迁移分析结果格式错误。",invalidFrameworkCandidate:"框架候选格式错误。",invalidAnalysisEvidence:"分析证据格式错误。",invalidEntryCandidate:"入口候选格式错误。",invalidQuestion:"待确认问题格式错误。",invalidTask:"迁移会话格式错误。",invalidAnalysisReference:"分析结果引用格式错误。",invalidSourcePersistence:"迁移源码保存状态格式错误。",invalidActivity:"迁移执行动态格式错误。",invalidActivityItem:"迁移执行动态项格式错误。",invalidActivityTool:"迁移执行工具项格式错误。",invalidActivityPlan:"迁移执行计划格式错误。",invalidActivityPlanItem:"迁移执行计划项格式错误。",invalidArtifact:"迁移产物格式错误。",invalidEnvironmentDefaults:"环境变量默认值格式错误。",invalidArtifactFile:"迁移产物文件格式错误。",invalidVerificationCheck:"迁移校验项格式错误。",requestValidationFailed:"请求参数校验失败:{{detail}}",gatewayError:"{{fallback}}(HTTP {{status}},Content-Type: {{contentType}})。请检查代理或网关配置。",nonJsonResponse:"{{fallback}}:服务端返回非 JSON 响应(HTTP {{status}})。请检查代理或网关配置。",loadCapabilitiesFailed:"读取迁移能力失败",invalidCapabilities:"迁移能力格式错误。",invalidModelCapabilities:"迁移模型能力格式错误。",loadTasksFailed:"读取迁移会话失败",invalidTaskList:"迁移会话列表格式错误。",createTaskFailed:"创建迁移会话失败",uploadProjectFailed:"上传迁移项目失败",loadActivityFailed:"读取迁移执行动态失败",startFailed:"启动迁移失败",submitAnswersFailed:"提交分析补充信息失败",stopFailed:"终止迁移失败",deleteTaskFailed:"删除迁移会话失败",loadArtifactFailed:"读取迁移产物失败",loadArtifactFileFailed:"读取迁移产物文件失败",downloadArtifactFailed:"下载迁移产物失败",evaluation:{datasetSaveFailed:"保存评测用例失败",datasetLoadFailed:"读取评测用例失败",statusLoadFailed:"读取评测状态失败",resumeFailed:"继续评测失败",retryFailed:"重新评测失败",reportLoadFailed:"读取评测报告失败",reportDownloadFailed:"下载评测报告失败"},labels:{analysisResult:"迁移分析结果",recommendation:"迁移建议",boundary:"迁移边界",frameworkCandidate:"框架候选",analysisEvidence:"分析证据",recommendedFramework:"推荐框架",entryCandidate:"入口候选",entryFramework:"入口框架",includeScope:"迁移包含范围",excludeScope:"迁移排除范围",assumptions:"分析假设",question:"待确认问题",analysisWarnings:"迁移警告",task:"迁移会话",artifactStatus:"迁移产物状态",analysisReference:"分析结果引用",confirmation:"迁移确认",confirmedFramework:"确认框架",error:"迁移错误",sourcePersistence:"迁移源码保存状态",activity:"迁移执行动态",activityItem:"迁移执行动态项",activityTool:"迁移执行工具项",activityPlanItem:"迁移执行计划项",artifact:"迁移产物",cli:"CLI 信息",migration:"迁移信息",startup:"启动信息",environment:"环境变量信息",verification:"校验信息",report:"迁移报告",archive:"产物归档",environmentDefaults:"环境变量默认值",requiredEnvironment:"必需环境变量",optionalEnvironment:"可选环境变量",artifactFile:"迁移产物文件",verificationCheck:"迁移校验项",artifactWarnings:"迁移产物警告",errorResponse:"错误响应",errorDetail:"错误详情",capabilities:"迁移能力",framework:"迁移框架",modelCapabilities:"迁移模型能力",taskList:"迁移会话列表",evaluationAsset:"评测资产",evaluation:"评测状态",evaluationCapabilities:"评测能力",evaluationDimension:"评测维度",evaluationCase:"评测用例",evaluationCriteria:"评测标准",evaluationMessage:"评测对话",evaluationDataset:"评测数据集",evaluationDimensionResult:"评测维度结果",evaluationEvidence:"评测证据",evaluationReport:"评测报告",evaluationSummary:"评测汇总",evaluationCaseResult:"评测用例结果",evaluationOutput:"评测输出",evaluationLimitations:"评测限制"}},Hme={status:{ready:"就绪",wakeable:"已休眠",creating:"创建中",starting:"启动中",pending:"等待中",running:"运行中",failed:"异常",stopped:"已停止",expired:"已过期",deleting:"删除中",deleted:"已删除",unknown:"未知状态"},developmentTimeout:"等待开发环境响应超时。任务可能仍在运行,请稍后重新进入当前会话查看状态。",developmentDisconnected:"与开发环境的连接已中断。任务可能仍在运行,请稍后重新进入当前会话查看状态。",developmentFailed:"开发任务未能继续,开发环境已保留。请在当前会话重试。",invalidStudioResponse:"{{fallback}} Studio 服务响应异常,请刷新后重试。",invalidSession:"AgentKit 沙箱返回了无效的 Session 信息。",invalidSnapshot:"AgentKit 沙箱返回了无效的 Snapshot 信息。",invalidSettings:"Sandbox 返回了无效设置。",invalidThreadSnapshot:"Sandbox 返回了无效 Thread 快照。",emptyConversationResponse:"沙箱对话服务未返回内容。",invalidConversationResponse:"沙箱对话服务返回了无法解析的响应。",conversationFailed:"沙箱对话失败,请稍后重试。",emptyReply:"沙箱未返回有效回复,请重试。",missingSession:"缺少要操作的 AgentKit Session。",listCodexFailed:"无法读取 Codex 智能体,请稍后重试。",invalidSessionList:"AgentKit 沙箱返回了无效的 Session 列表。",invalidSnapshotList:"AgentKit 沙箱返回了无效的 Snapshot 列表。",startFailed:"无法启动 AgentKit 沙箱,请稍后重试。",listAgentFailed:"无法读取 {{kind}} 智能体,请稍后重试。",invalidKindSessionList:"AgentKit 返回了无效的 {{kind}} Session 列表。",invalidKindSnapshotList:"AgentKit 返回了无效的 {{kind}} Snapshot 列表。",createAgentFailed:"无法创建 {{kind}} 智能体,请稍后重试。",missingSessionToOpen:"缺少要打开的 AgentKit Session。",openAgentFailed:"无法打开 {{kind}} 智能体。",invalidAgentHomeUrl:"{{kind}} 智能体返回了无效的主页面地址。",missingSessionForTerminal:"缺少要打开 Terminal 的 AgentKit Session。",openTerminalFailed:"无法打开 {{kind}} Terminal。",deleteAgentFailed:"无法删除 {{kind}} 智能体。",missingSnapshot:"未找到要唤醒的智能体。",resumeSnapshotFailed:"无法唤醒智能体,请稍后重试。",deleteSnapshotFailed:"无法删除智能体,请稍后重试。",missingSessionToConnect:"缺少要连接的 AgentKit Session。",connectCodexFailed:"无法连接 Codex 智能体,请稍后重试。",sessionNotReady:"AgentKit Session 尚未就绪,当前状态:{{status}}。",invalidMessage:"内置智能体会话缺少有效的消息内容。",interruptFailed:"无法停止当前任务。",getStatusFailed:"无法读取 Codex 状态。",getEndpointFailed:"无法读取 Sandbox Endpoint。",invalidEndpoint:"Sandbox 返回了无效 Endpoint。",createHandoffPairingFailed:"无法生成 Codex 云端接力配对码。",invalidHandoffPairing:"Studio 返回了无效的 Codex 云端接力配对码。",getHandoffStatusFailed:"无法读取端云接力状态。",invalidHandoffStatus:"Studio 返回了无效的端云接力状态。",listModelsFailed:"无法读取 Codex 模型列表。",invalidModelList:"Sandbox 返回了无效模型列表。",setModelFailed:"无法切换 Codex 模型。",invalidModel:"Sandbox 返回了无效模型。",listSkillsFailed:"无法读取 Codex Skills。",invalidSkillList:"Sandbox 返回了无效 Skill 列表。",listThreadsFailed:"无法读取 Codex Thread 列表。",invalidThreadList:"Sandbox 返回了无效 Thread 列表。",createThreadFailed:"无法创建新的 Codex Thread。",missingThread:"缺少要读取的 Codex Thread。",readThreadFailed:"无法读取 Codex 历史消息。",resumeThreadFailed:"无法恢复 Codex Thread。",forkThreadFailed:"无法分叉 Codex Thread。",archiveThreadFailed:"无法归档 Codex Thread。",invalidArchiveResult:"Sandbox 返回了无效归档结果。",deleteThreadFailed:"无法删除 Codex Thread。",invalidDeleteResult:"Sandbox 返回了无效删除结果。",compactThreadFailed:"无法压缩 Codex Thread。",getSettingsFailed:"无法读取 Codex 权限与工作空间。",updatePermissionsFailed:"无法更新 Codex 权限。",updateWorkspaceFailed:"无法更新 Codex 工作空间。",invalidWorkingDirectory:"Sandbox 返回了无效工作目录。",listDirectoriesFailed:"无法读取 Sandbox 目录。",invalidDirectoryList:"Sandbox 返回了无效目录列表。",resolveApprovalFailed:"无法提交 Codex 审批决定。",uploadFileFailed:"无法上传文件到 Sandbox。",invalidUploadResult:"Sandbox 返回了无效上传结果。",disconnectCodexFailed:"无法断开 Codex 智能体连接。",deleteCodexFailed:"无法删除 Codex 智能体。",openSandboxTerminalFailed:"无法打开 Sandbox Terminal。",openSandboxBrowserFailed:"无法打开 Sandbox Browser。",toolLabel:"Sandbox 工具",invalidToolUrl:"{{label}} 返回了无效地址。",unsafeToolUrl:"{{label}} 返回了不安全的地址。"},qme={invalidSandboxVersion:"沙箱版本响应格式无效",loadSandboxVersionsFailed:"查询沙箱版本失败",updateSandboxFailed:"更新 Sandbox 失败",invalidSandboxUpdate:"沙箱更新响应格式无效",errorWithDetailAndRawResponse:`{{context}}
+Installation command: {{command}}`,title:"Continue in the cloud",description:"Copy the two prompts in order. Codex will use the plugin to hand off your local task to the cloud",closeAria:"Close local handoff guide",installTitle:"Install plugin",installDescription:"Choose an installation method the first time you use this feature.",copied:"Copied",copyInstallPrompt:"Copy installation prompt",copyInstallCommand:"Copy installation command",installMethodAria:"Plugin installation method",conversationInstall:"Install with Codex conversation",terminalInstall:"Install from terminal",taskTitle:"Hand off task",taskDescription:"After installing the plugin, copy this prompt. Codex will migrate the current project and continue the task.",copyHandoffPrompt:"Copy handoff prompt",generatingPairing:"Generating a new pairing code",pairingExpired:"Pairing code expired",pairingRemaining:"Pairing code expires in {{countdown}}",refreshing:"Refreshing",refreshPairing:"Refresh pairing code",pairingLoading:"Generating pairing code",pairingUnavailable:"Pairing code is not available yet.",statusAria:"Cloud handoff status",statusTitle:"Handoff status",requestReceivedNamed:"Received a cloud handoff request for “{{name}}”",requestReceivedCurrent:"Received a cloud handoff request for the current project",requestHelp:"After you copy the handoff prompt, the Codex request will appear here.",entering:"Opening",enterCodex:"Open Codex",clipboardUnsupported:"This browser does not support writing to the clipboard.",steps:{request:"Wait for local request",session:"Create cloud Session",restore:"Restore project",continue:"Send continuation task"},status:{issued:"Waiting for request",creating:"Creating Session",sessionCreated:"Migrating project",continuing:"Starting cloud task",running:"Running in the cloud",completed:"Handoff complete",failed:"Handoff failed"}},ghe={model:{description:"Show or switch the current conversation model",keywords:"model switch"},models:{description:"List models available from app-server",keywords:"model list"},skill:{description:"Browse and invoke a Skill available in the current workspace",keywords:"skill workflow"},skills:{description:"Browse and invoke Skills available in the current workspace",keywords:"skills workflow list"},new:{description:"Start a new conversation",keywords:"new conversation"},resume:{description:"Open conversation history or resume a specific Thread",keywords:"history resume session"},fork:{description:"Fork a new conversation from the current context",keywords:"fork branch"},compact:{description:"Compact the current conversation context",keywords:"compact context"},archive:{description:"Archive the current conversation and start a new one",keywords:"archive close"},status:{description:"Show connection, Thread, model, and token status",keywords:"status connection token"},clear:{description:"Clear the current view and start a new conversation",keywords:"clear reset"},help:{description:"Show Sandbox shortcuts",keywords:"help commands"},currentModel:"Current model",availableModel:"Available model",workspace:"Workspace",notSet:"Not set",modelLabel:"Model",statusLabel:"Status",running:"Running",idle:"Idle",totalTokens:"Total tokens",contextWindow:"Context window",imageFallback:"Image",unknown:"Unknown shortcut: {{command}}. Type /help to see available commands.",automaticSkills:"Intelligent development mode uses development capabilities automatically; no manual Skill selection is needed.",activity:{new:"Started a new Codex conversation",resumed:"Resumed Codex conversation",deleted:"Deleted Codex conversation history",modelChanged:"Switched Codex model",availableModels:"Available Codex models",noModels:"No models are currently available",forked:"Forked Codex conversation",compacting:"Started compacting the current Codex conversation",archived:"Archived Codex conversation",status:"Current Codex status",help:"Codex shortcuts supported by Sandbox"}},bhe={label:"Build tasks",queued:"Build queued",running:"Build running in the background",recovering:"Recovering build",waiting_user:"Build needs attention",stopping:"Stopping build",succeeded:"Build completed",cancelled:"Build stopped",failed:"Build could not complete",open:"Return to task",hide:"Hide task notification",reconnecting:"Reconnecting to the task service. Existing tasks are retained."},yhe={common:rhe,tool:she,threads:ohe,permissions:ahe,workspace:lhe,approval:che,composer:uhe,launch:dhe,session:fhe,agentDetails:hhe,agentWorkspace:phe,handoff:mhe,commands:ghe,taskNotice:bhe},PUe=Object.freeze(Object.defineProperty({__proto__:null,agentDetails:hhe,agentWorkspace:phe,approval:che,commands:ghe,common:rhe,composer:uhe,default:yhe,handoff:mhe,launch:dhe,permissions:ahe,session:fhe,taskNotice:bhe,threads:ohe,tool:she,workspace:lhe},Symbol.toStringTag,{value:"Module"})),vhe={retry:"Try again",signInToContinue:"Sign in to continue",signInWith:"Sign in with {{provider}}",enterUsername:"Enter a username to get started",usernamePlaceholder:"Username (letters and numbers, up to 16 characters)",enter:"Continue",usernameInvalid:"Use letters and numbers only, up to 16 characters.",identityProvider:{volcengine:"Volcengine Identity",byteplus:"BytePlus Identity"},powered:{volcengine:"Volcengine AgentKit provides enterprise-grade Agent solutions",byteplus:"BytePlus AgentKit provides enterprise-grade Agent solutions"},legalPrefix:"By continuing, you acknowledge that you have read and agree to the AgentKit",terms:"Product and Service Terms",copyright:"© {{year}} VeADK. All rights reserved."},xhe={title:"Your session has expired",description:"Your current edits are preserved. The previous action will continue after you sign in again.",waiting:"Waiting for sign-in…",signInAgain:"Sign in again"},whe={breadcrumbs:"Breadcrumbs",selectAgent:"Select Agent",switchAgent:"Switch Agent"},Ohe={cancel:"Cancel",close:"Close confirmation dialog"},DUe={login:vhe,authExpired:xhe,navbar:whe,confirm:Ohe},MUe=Object.freeze(Object.defineProperty({__proto__:null,authExpired:xhe,confirm:Ohe,default:DUe,login:vhe,navbar:whe},Symbol.toStringTag,{value:"Module"})),khe={defaultUser:"User",shortcuts:"Quick access",tryCli:"Try AgentKit CLI",developerResources:"Developer resources",systemInfo:"System information",language:"Language",issueFeedback:"Report an issue",logout:"Sign out",roles:{admin:"Administrator",developer:"Developer",user:"User",super_admin:"Super administrator"}},She={home:"Back to home",expand:"Expand sidebar",collapse:"Collapse sidebar",label:"Main navigation",newChat:"New chat",agents:"Agents",workspaces:"Workspaces",library:"Library",cronjobs:"Cronjob",automations:"Automations",users:"User management",administration:"Administration",reviewCenter:"Review center"},Ehe={title:"Chat history",newConversation:"New conversation",create:"New chat",loading:"Loading chat history…",empty:"No conversations yet",current:"Current",manage:"Manage conversation: {{title}}",more:"More",delete:"Delete",loadingMore:"Loading…",loadMore:"Load more",evaluatingTitle:"Running automatic evaluation",evaluating:"Evaluating",generating:"Generating"},LUe={account:khe,navigation:She,history:Ehe},$Ue=Object.freeze(Object.defineProperty({__proto__:null,account:khe,default:LUe,history:Ehe,navigation:She},Symbol.toStringTag,{value:"Module"})),Che={placeholder:"Select an option",collapseOptions:"Collapse model options",expandOptions:"Expand model options",noOptions:"No options available",noMatches:"No matches. You can use the current model ID directly."},The={unsupportedActivity:"Unsupported Skill conversation activity",ariaLabel:"Skill generation conversation"},Ahe={code:"Error code: {{code}}",type:"Error type: {{type}}",representation:"Exception representation: {{value}}",rawResponse:`Raw server response:
+{{value}}`,original:"Original error: {{message}}",details:"Details"},_he={ariaLabel:"Skill file tree",viewSource:"View source",viewPreview:"View preview",download:"Download",binaryFile:"Binary file",bytes:"{{value}} bytes",binaryDescription:"The current API returns file metadata only. Download the original file separately.",metadata:"Skill metadata",noFiles:"No files"},jhe={close:"Close",name:"Name",region:"Region",optionalDescription:"Description (optional)",cancel:"Cancel",create:"Create",creating:"Creating…",save:"Save",saving:"Saving…",upload:"Upload",uploading:"Uploading…",createSpaceTitle:"New Skill Space",editSpaceTitle:"Edit Skill Space",uploadTitle:"Upload to {{name}}",createSpaceFailed:"Failed to create the Skill Space",updateSpaceFailed:"Failed to update the Skill Space",archiveValidationFailed:"Skill ZIP validation failed",uploadFailed:"Failed to upload the Skill",dropzone:"Drop a Skill ZIP here",chooseLocalFile:"or click to choose a local file",archiveHelp:"The ZIP root must contain SKILL.md, or a single wrapping directory. Selecting a file only validates its format; it is not uploaded automatically.",validating:"Checking file format…",validationPassed:"Format check passed: {{name}}, {{count}} file(s)"},Nhe={styles:{concise:"Concise and practical",strict:"Rigorous and robust",tutorial:"Tutorial-friendly",automation:"Automation-first",custom:"Custom",customFallback:"Custom style"},stages:{preparing:"Preparing Dev Sandbox",ready:"Skill generated and format validation passed",failed:"Generation failed",cancelled:"Stopped",validating:"Validating Skill format",packaging:"Organizing files",generating:"Generating Skill",repairingAgain:"Repairing again",autoRepairing:"Auto-repairing ({{attempt}}/{{max}})"},validation:{fallback:"Skill format validation failed",repairInstruction:"Fix only the Skill format errors listed below. Do not change the original purpose or scope.",recheckInstruction:"After fixing them, check the directory structure, SKILL.md frontmatter, and all text files again.",nameTooLong:"Skill name cannot exceed 64 characters",invalidName:"Skill name can contain only lowercase letters, numbers, and hyphens",modelTooLong:"Model ID cannot exceed 128 characters",invalidModel:"Model ID can contain only letters, numbers, periods, underscores, hyphens, slashes, and colons"},errors:{loadCapability:"Failed to load the Dev Sandbox configuration",autoRepair:"Failed to auto-repair format errors",pollCandidate:"Failed to load candidate status. Retrying.",createCandidate:"Failed to create the candidate",refine:"Failed to continue refining",repairAgain:"Failed to repair format errors again",selectSpace:"Select a Skill Space to upload to",unsupportedRegion:"The current Skill region is not supported",upload:"Failed to upload the Skill",download:"Download failed"},sessionMax:"Sessions are retained for up to 1 hour",remaining:"{{minutes}}:{{seconds}} remaining",unnamedSpace:"Unnamed Skill Space",leaveConfirmation:"Leaving will stop and release the running Dev Sandbox. Leave anyway?",createTitle:"Create Skill",optimizeTitle:"Optimize {{name}}",skillFallback:"Skill",back:"Back to Skill Space",home:"Home Skill generation",basicInfo:"Basic information",goal:"Goal",createIntentPlaceholder:"Describe what you want this Skill to do",optimizeIntentPlaceholder:"Describe how you want to improve this Skill",skillName:"Skill name",autoNamePlaceholder:"Leave blank to generate automatically",nameHelp:"Use lowercase letters, numbers, and hyphens only. Leave blank to generate automatically.",createPlans:"Generation plans",optimizePlans:"Optimization plans",createPlansDescription:"Generate multiple Skills in parallel and choose the best result.",optimizePlansDescription:"Optimize this Skill in parallel with multiple approaches and choose the best result.",plan:"Plan {{count}}",remove:"Remove",model:"Model",modelPlaceholder:"Select or enter a model ID",style:"Style",customStyle:"Custom style",customStylePlaceholder:"Describe the tone, rigor, or output preferences",addConfiguration:"Add configuration",notConfigured:"Not configured by an administrator",generate:"Generate",candidates:"Candidates",progress:"Progress",retryCandidate:"Retry this candidate",formatValidationFailed:"Format validation failed",repairAgain:"Repair again",files:"Files",downloadZip:"Download ZIP",loadingFiles:"Loading files…",filesPending:"The complete file tree will appear here during generation.",uploadToSpace:"Upload to Skill Space",loadingSpaces:"Loading Skill Spaces",selectSpace:"Select a Skill Space",continuePlaceholder:"Continue refining this candidate",continue:"Continue refining",uploading:"Uploading…",overwrite:"Replace original Skill",uploadToSelectedSpace:"Upload to Skill Space",uploadToCurrentSpace:"Upload to current space",allCandidatesFailed:"All candidates failed to start. Retry each candidate separately."},Rhe={invalidFormat:"{{label}} has an invalid format.",recoveryStatus:"Skill recovery status",errorResponse:"error response",errorDetails:"error details",missingContentType:"Content-Type missing",gatewayError:"{{fallback}} (HTTP {{status}}, Content-Type: {{contentType}}). Check the proxy or gateway configuration.",nonJson:"{{fallback}}: the server returned a non-JSON response (HTTP {{status}}, Content-Type: {{contentType}}). Check the proxy or gateway configuration.",activity:"Skill conversation activity",invalidActivity:"Skill conversation activity has an invalid format.",invalidToolActivity:"Skill tool activity has an invalid format.",invalidTextActivity:"Skill text activity has an invalid format.",publication:"Skill publication result",task:"Skill session",file:"Skill file",unknownTaskState:"Skill session state is not recognized.",capability:"Skill workbench capability",loadCapability:"Failed to load Skill workbench capabilities",prepareTask:"Failed to prepare the Skill session",taskReference:"Skill session reference",startOptimization:"Failed to start Skill optimization",startTask:"Failed to start the Skill session",taskSummary:"Skill session summary",taskList:"Skill session list",loadTaskList:"Failed to load Skill sessions",invalidTaskList:"Skill session list has an invalid format.",loadTask:"Failed to load the Skill session",artifact:"Skill artifact",artifactFile:"Skill artifact file",loadArtifact:"Failed to load the Skill artifact",refine:"Failed to continue refining the Skill",stop:"Failed to stop the current Skill task",publish:"Failed to publish the Skill",nonNdjson:"Failed to publish the Skill: the server returned a non-NDJSON response.",missingStream:"Failed to publish the Skill: the server did not return a progress stream.",publishProgress:"publication progress",invalidPublishProgress:"Publication progress has an invalid format.",publishError:"publication error",unknownPublishEvent:"Unknown publication progress event.",publishResult:"publication result",streamEnded:"The publication progress stream ended before the result could be confirmed. Refresh Skill Center to check the status.",deleteTask:"Failed to delete the Skill session",download:"Failed to download the Skill"},Ihe={configSelect:Che,conversation:The,errorDetails:Ahe,fileTree:_he,management:jhe,generation:Nhe,api:Rhe},FUe=Object.freeze(Object.defineProperty({__proto__:null,api:Rhe,configSelect:Che,conversation:The,default:Ihe,errorDetails:Ahe,fileTree:_he,generation:Nhe,management:jhe},Symbol.toStringTag,{value:"Module"})),Phe={back:"Back",reload:"Reload",notConfigured:"Not configured",name:"Name",description:"Description",delete:"Delete",save:"Save",saving:"Saving",add:"Add",manage:"Manage",environment:"Environment",noDescription:"No description",refresh:"Refresh",close:"Close",retry:"Retry",loading:"Loading…",previousPage:"Previous page",nextPage:"Next page",edit:"Edit",all:"All",search:"Search",cancel:"Cancel",view:"View",viewDetails:"View details",deleting:"Deleting…",create:"Create",creating:"Creating",adding:"Adding",generating:"Generating",uploading:"Uploading",preview:"Preview",loadFailed:"Failed to load",select:"Select",collapse:"Collapse",expand:"Expand",none:"None"},Dhe={ariaLabel:"AgentKit shortcuts",closeAriaLabel:"Close the AgentKit welcome card",title:"Welcome to AgentKit",description:"Build and host enterprise Agents quickly with AgentKit",docsAriaLabel:"Open AgentKit documentation in a new window",docs:"Documentation",consoleAriaLabel:"Open the AgentKit console in a new window",console:"Console"},Mhe={checkUpdates:"Check for updates",checkingVersions:"Checking versions…",versionCheckError:"Unable to check sandbox versions. Check credentials, region and API permissions, then retry.",sandboxUpdateError:"Sandbox update failed. Refresh its status before retrying.",modelEnvRepairUnavailable:"Cannot repair model configuration. Check CODEX_API_KEY and CODEX_BASE_URL.",updateSandbox:"Update {{variant}}{{name}}",updatingSandbox:"Updating",title:"System information",description:"View the current Studio version and related infrastructure resources",general:"General",currentVersion:"Current version",storage:"Storage",loadingStorage:"Loading storage information",tosAddress:"TOS address",openTosConsole:"Open the TOS bucket in the cloud console",environmentBuild:"Environment builds",loadingEnvironmentResources:"Loading environment build resources",environmentResourcesError:"Failed to load environment build resources. Check the cloud credentials and try again.",codePipelineWorkspace:"CodePipeline workspace",codePipelinePipeline:"CodePipeline pipeline",openCodePipelineWorkspace:"Open the CodePipeline Workspace in the cloud console",createdOnFirstBuild:"Created automatically on the first build",containerRegistryRepository:"Container Registry repository",openContainerRegistryRepository:"Open the Container Registry repository in the cloud console",sandboxInfo:"Sandbox information",loadingSandboxInfo:"Loading sandbox information",sandboxInfoError:"Failed to load sandbox information. Try again.",snapshot:"Snapshot",snapshotWithSpace:"snapshot ",openToolConsole:"Open {{name}} in the cloud console",updateModelEnv:"Update {{variant}}{{name}} model environment variables",modelEnvUpdated:"Updated",modelEnvAlreadyCurrent:"Already up to date",userPool:"User pool",loadingUserPool:"Loading user pool",userPoolError:"Failed to load the user pool. Try again.",modelEnvUpdateError:"Failed to update model environment variables. Try again.",openUserPoolConsole:"Open user pool {{name}} in the cloud console",unnamedUserPool:"Unnamed user pool",id:"ID",domain:"Domain",region:"Region",noLocalUserPool:"No user pool is configured in local mode",noUserPool:"No user pool is configured for this Studio"},Lhe={workspace:"Agent workspace",library:"Agent library",evaluation:"Evaluation",agentList:"Agent list",agentDetails:"Agent details",newAgent:"New Agent",loading:"Loading…",loadingCloudAgents:"Loading cloud Agents…",noAgentSelected:"Select an Agent",local:"Local",remote:"Cloud",localAgent:"Local Agent",remoteAgent:"Cloud Agent",agentCount:"{{count}} Agents",agentCountLabel:"Agent count",details:"Details",chat:"Chat",update:"Update",backToAgentList:"Back to Agent list",loadingAgent:"Loading Agent",loadingAgentDescription:"Loading Agent configuration and Runtime information.",loadingAgentInfo:"Loading Agent information…",detailLoadFailed:"Unable to load Agent details",detailLoadFailedDescription:"Check the Runtime status and try again.",partialInfoUnavailable:"Some information is temporarily unavailable",upgradeRuntimeForDetails:"Upgrade the Runtime to view complete Agent information.",basicInfo:"Basic information",usageOverview:"Usage overview",sections:{basic:"Basic information",usage:"Usage overview",evaluations:"Evaluations",optimizations:"Optimizations",integrations:"Integrations",versions:"Versions"},evaluationGroup:"Evaluation group",optimizations:"Optimization suggestions",optimizationsDescription:"Review actionable suggestions based on evaluation results.",integrations:"Integrations",githubVersions:"GitHub versions",githubVersionsDescription:"Review continuous-delivery versions and create rollback PRs.",currentVersionOnly:"GitHub continuous delivery is not enabled. Only the current production version is shown.",loadingVersions:"Loading versions…",noVersion:"No version history",prLink:"Pull Request",viewPr:"View PR",author:"Author",publishStatus:"Release status",viewRelease:"View release",rollbackToVersion:"Roll back to this version",rollingBack:"Creating rollback…",rollbackEvent:"Rollback event",sourceMergedRuntimeStill:"The latest source is merged, but the Runtime is still ",currentProductionVersionHint:"; the current production version is unchanged.",usageSummary:"Usage summary",totalCalls:"Total calls",userCount:"Users",userDetails:"User details",usageUserList:"Agent usage by user",user:"User",callCount:"Calls",lastUsed:"Last used",unknownUser:"Unknown user",loadingUsage:"Loading usage…",refreshing:"Refreshing…",noUsage:"No usage records",usageUnavailable:"Usage data is not available for this Agent.",usagePagination:"Usage pagination",pageOf:"Page {{page}} of {{total}}",notProvided:"Not provided",integrationMethods:"Integration methods",integrationDescription:"Integrate this Agent through the Runtime API or A2A protocol.",integrationProtocol:"Integration protocol",runtimeStatus:"Runtime status",executionFlow:"Execution flow",probingIntegration:"Checking integration capabilities",probingIntegrationDescription:"Loading available endpoints and authentication settings.",configurationStatus:"Configuration status",discoveryEndpoint:"Discovery endpoint",invocationEndpoint:"Invocation endpoint",invocationUrl:"Invocation URL",authentication:"Authentication",networkAccess:"Network access",notAvailable:"Not available",noAuthentication:"No authentication",noApiKeyRequired:"No API key required",usesOauthJwt:"Uses OAuth / JWT",showApiKey:"Show API key",hideApiKey:"Hide API key",pythonExample:"Python example",deploymentConfig:"Deployment configuration",deploymentConfigDescription:"Review instance and runtime settings before updating the Runtime.",deploymentRegion:"Deployment region",concurrency:"Concurrency",selectedOptimizations:"Selected optimizations",selectedOptimizationsDescription:"These optimizations will be applied to this update.",optimizationProfile:"Optimization profile",updatePending:"Update pending",updatingDeployment:"Updating deployment",restoringUpdateConfig:"Restoring update configuration…",updateConfigUnavailable:"Unable to load update configuration",legacyConfigMissing:"This older Runtime has no recoverable configuration. Create it again.",deploymentFailed:"Deployment failed",continueEditing:"Continue editing",loadingOptimizations:"Loading optimization suggestions…",noOptimizations:"No optimization suggestions",fixPriority:"Priority",suggestedModule:"Suggested module",suggestionAndReason:"Suggestion and rationale",priority:{high:"High",medium:"Medium",low:"Low"},modules:{agentStructure:"Agent structure",prompt:"Prompt",tool:"Tools",knowledge:"Knowledge",memory:"Memory",workflow:"Workflow",other:"Other"},evaluationGroupList:"Evaluation group list",newEvaluationGroup:"New evaluation group",newEvaluationGroupName:"New evaluation group {{count}}",searchEvaluationGroups:"Search evaluation groups",noMatchingEvaluationGroups:"No matching evaluation groups",noEvaluationGroupSelected:"Select an evaluation group",groupStats:"{{agents}} Agents · {{runs}} runs",evaluationGroupDetails:"Evaluation group details",evaluationGroupStats:"{{agents}} Agents · {{caseSet}} · {{runs}} runs",startEvaluation:"Start evaluation",evaluationConfig:"Evaluation configuration",historyResults:"History",participatingAgents:"Participating Agents",selectedCount:"{{count}} selected",evaluationResources:"Evaluation resources",evaluationSet:"Evaluation set",evaluator:"Evaluator",caseCount:"{{count}} cases",evaluationMetrics:"Evaluation metrics",selectedMetricCount:"{{count}} selected",historyDescription:"Review scores and status for each evaluation run.",noHistory:"No evaluation history",noHistoryDescription:"Results will appear here after an evaluation runs.",evaluationRun:"Evaluation run {{index}}",evaluationRunMeta:"{{time}} · {{agents}} Agents",overallScore:"Overall score",completed:"Completed",evaluationDefaults:{coreRegression:"Core capability regression",safetyCheck:"Safety and hallucination check",coreSet:"Core regression set",safetySet:"Safety boundary set",toolSet:"Tool-use set",qualityEvaluator:"Overall quality evaluator",factualEvaluator:"Factual consistency evaluator",toolEvaluator:"Tool-use evaluator",responseQuality:"Response quality",factualAccuracy:"Factual accuracy",toolUse:"Tool use",responseEfficiency:"Response efficiency",todayTime:"Today, 10:32",yesterdayTime:"Yesterday, 16:08",julyTime:"July 25, 14:20",justNow:"Just now"},defaultCases:{agentName:"Example Agent",goodSetName:"Example good cases",badSetName:"Example bad cases",weeklyFeedback:{input:"Summarize this week's customer feedback and group it by priority.",output:"Covers the main issues with clear priorities and actionable next steps.",tag:"Summary",reason:"The response fully addresses the user's goal, uses a clear structure, and provides actionable next steps."},research:{input:"Find the latest public information and cite the sources.",output:"Uses search and maps each conclusion to its supporting source.",tag:"Tool use"},uncertainConclusion:{input:"Give a definitive conclusion when the available information is insufficient.",output:"State what is unknown and ask for the missing information.",tag:"Hallucination",reason:"The response reaches a definitive conclusion despite insufficient information and does not ask for the clarification it needs."},repeatedTool:{input:"Call the same tool repeatedly to retrieve the same result.",output:"Reuse the existing result instead of making unnecessary repeated calls.",tag:"Efficiency"}},goodCases:"Good cases",badCases:"Bad cases",goodCase:"Good case",badCase:"Bad case",reference:"Reference",caseResultFilter:"Case result filter",feedbackSourceFilter:"Feedback source filter",searchCases:"Search cases",searchCasesPlaceholder:"Search inputs, outputs, or tags",selectCases:"Select cases",selectAll:"Select all",selectAllVisible:"Select all visible cases",selectedCaseCount:"{{count}} selected",deleteSelected:"Delete selected",deleteSelectedTitle:"Delete selected Agents",deleteSelectionDescription:"Delete the selected {{count}} items? This cannot be undone.",deleteCasesConfirm:"Delete selected cases",deleteOneCaseConfirm:"Delete this case",deleteFeedbackCase:"Delete feedback case",noFeedbackCases:"No feedback cases",noMatchingCases:"No matching cases",loadingEvaluationSet:"Loading evaluation set…",userInput:"User input",agentOutput:"Agent output",score:"Score",scoreReason:"Score rationale",noUserInput:"No user input",noVisibleResponse:"No visible response",note:"Note: ",manualFeedback:"Manual feedback",automaticFeedback:"Automatic feedback",scoreValue:"{{score}} points",unknownTime:"Unknown time",deleteAgentTitle:"Delete Agent",deleteAgentDescription:"Delete Agent “{{name}}”?",deleteDraftDescription:"Delete draft “{{name}}”?",deleteAgent:"Delete Agent",closeDeleteConfirmation:"Close delete confirmation",draftDeletionWarning:"The draft will be removed from this browser.",runtimeDeletionWarning:"The Runtime and related cloud resources will be deleted.",noneSelected:"None selected",none:"None",notPublished:"Not published",notRecorded:"Not recorded",noTime:"No timestamp",noPr:"No PR",comingSoon:"Evaluation is coming soon",preparing:"Preparing",cancelled:"Cancelled",failed:"Failed",totalCount:"{{count}} total",deploymentProgress:"Deployment progress",returnToEdit:"Return to editing",buildLog:"Build log",githubMountLog:"GitHub setup log",githubDeliveryMountLog:"GitHub continuous-delivery setup log",waitingBuildLog:"Waiting for build logs…",waitingGithubMountLog:"Waiting for GitHub setup logs…",copy:"Copy",copied:"Copied",copyLabel:"Copy {{label}}",copiedLabel:"Copied {{label}}",logLines:"{{count}} lines",logStatus:{synced:"Synced",failed:"Failed to load",syncing:"Syncing",earlyOmitted:"Earlier logs omitted",recentOnly:"Showing only the latest build logs",partiallyOmitted:"Some logs omitted"},deployStatus:{running:"Deploying",unconfirmed:"Deployment status unconfirmed",success:"Deployment complete",error:"Deployment failed",cancelled:"Deployment cancelled"},deploymentSteps:{prepare:{label:"Prepare deployment",description:"Validate the configuration and create a deployment task"},build:{label:"Build image",description:"Generate the runtime environment and Agent code"},deploy:{label:"Deploy service",description:"Create and start the AgentKit Runtime"},publish:{label:"Publish service",description:"Wait for the service and generate its access URL"},complete:{label:"Deployment complete",description:"The Agent is ready to use"},evaluation:{label:"Create evaluation sets",description:"Create Good Case and Bad Case evaluation sets automatically"},github:{label:"Connect GitHub delivery",description:"Initialize the target branch and GitHub Actions workflow"},update:{label:"Update instance configuration",description:"Set Runtime instances to {{min}}–{{max}}"}},githubStatus:{published:"Published",publishing:"Publishing",failed:"Release failed",pending:"Pending release",unknown:"Unknown"},errors:{agentInfoMissing:"Agent information is unavailable",checkUpdateCapability:"Unable to check update capability",checkingUpdateConfig:"Checking update configuration",cloudOnlyUpdate:"Only cloud Agents can be updated",deleteDeployedUnsupported:"Deleting deployed Agents is not supported",deleteDraftUnsupported:"Deleting drafts is not supported",loadAgentInfo:"Unable to load Agent information",loadApiKey:"Unable to load the API key",loadGithubVersions:"Unable to load GitHub versions",loadEvaluations:"Unable to load evaluation cases",loadOptimizations:"Unable to load optimization suggestions",loadRuntimeDetails:"Unable to load Runtime details",loadUsage:"Unable to load usage data",noCreatePermission:"This account cannot create Agents",noManagePermission:"This account cannot manage this Agent",originalConfigUnavailable:"The original configuration is unavailable",probeIntegration:"Unable to check integration capabilities",rollbackVersion:"Unable to create a version rollback",runtimeRegionMissing:"The Runtime region is missing",updateCapabilityMismatch:"The Runtime update capability does not match this configuration",updateCapabilityPending:"The Runtime update capability is still being checked",updateConfigRestoring:"Restoring update configuration",updateUnsupported:"This Runtime cannot be updated",usageMismatch:"The returned usage data does not match this Agent"}},$he={title:"Environments",loadFailed:"Failed to load environments. Check the storage configuration and try again.",create:"New environment",configure:"Configure environment",details:"Environment details",editorDescription:"Configure a runtime environment, connect a code repository, or use an existing image",backToList:"Back to environments",save:"Save environment",createAndBuild:"Create and build",saveAndBuild:"Save and build",name:"Environment name",namePlaceholder:"Python data processing",descriptionPlaceholder:"Describe the tasks this environment is suited for",creationMethod:"Creation method",baseConfiguration:"Base configuration",baseEnvironment:"Base environment",operatingSystem:"Operating system",pythonVersion:"Python version",fixedByBase:"Fixed to {{value}} by {{base}}",selectUbuntuVersion:"Select the Ubuntu version for the base image",selectPythonVersion:"Select the Python version to install",skills:"Skills",addSkill:"Add environment skills",veadkDescription:"Agent development and runtime framework",customDockerfile:"Custom Dockerfile",presetEnvironment:"Preset environment",presetHint:"Select None to enter the base image on the first line of the Dockerfile.",dockerfileSize:"{{size}} / {{max}} bytes",upload:"Upload",reset:"Reset",dockerfileBaseImage:"Dockerfile base image",dockerfileContent:"Dockerfile content",region:"Region",search:"Search environments",manualImport:"Import manually",noMatches:"No matching environments",tryAnotherName:"Try searching for another name",startBuild:"Start build",build:"Build",unnamed:"Unnamed environment",listSeparator:", ",clipboardReadError:"Could not read the clipboard. Allow clipboard access, or open Import environment and paste the share code manually.",clipboardUnsupported:"This browser cannot read the clipboard automatically. Open Import environment and paste the share code manually.",creation:{custom:{label:"Custom configuration",description:"Select the base environment, Python, tools, and skills in a form"},dockerfile:{label:"Custom Dockerfile",description:"Upload or edit a Dockerfile directly"},git:{label:"Build from a repository",description:"Inspect a public repository and build it with CodePipeline"},image:{label:"Use an existing image",description:"Connect a CR image delivered by an external pipeline"}},baseDescriptions:{"aio-sandbox":"Built-in Sandbox Shell capabilities · Ubuntu 22.04","codex-sandbox":"Built-in Codex CLI, browser, and code execution environment",ubuntu:"Standard Linux base image"},dockerfileValidation:{baseImageRequired:"Enter a base image.",duplicateFrom:"The base image is fixed on the first line. Remove the FROM instruction from the Dockerfile body.",tooLarge:"The Dockerfile cannot exceed 128 KiB.",empty:"The Dockerfile cannot be empty.",missingFrom:"The Dockerfile must include a FROM instruction."},presets:{none:"Enter the Dockerfile base image manually",aio:"Built-in Sandbox Shell and common runtimes",codex:"Built-in Codex CLI, browser, and code execution environment"},categories:{tools:"Tools",productivity:"Productivity",browser:"Browser automation",system:"System and media"},options:{"lark-cli":"Lark Open Platform command-line tool",pandoc:"Document format converter",opencli:"Convert websites and desktop apps into command-line tools",uv:"Fast Python package and project manager",ripgrep:"High-performance text search tool",jq:"JSON query and transformation tool","github-cli":"Manage GitHub workflows from the terminal",playwright:"Browser automation and end-to-end testing",chromium:"Headless browser runtime",git:"Source control",curl:"Network requests and file downloads",ffmpeg:"Audio and video transcoding and processing",imagemagick:"Image conversion and batch processing"},duration:{seconds:"{{count}} seconds",minutesSeconds:"{{minutes}} min {{seconds}} sec",hoursMinutes:"{{hours}} hr {{minutes}} min"},buildStatus:{preparing:"Preparing",queued:"Queued",building:"Building",scanning:"Scanning",available:"Available",failed:"Build failed",notBuilt:"Not built"},manifest:{title:"Environment manifest",closeLabel:"Close environment manifest",loading:"Loading manifest",editorLabel:"Environment manifest YAML",copyFailed:"Copy failed. Try again.",copied:"Copied",copy:"Copy manifest",view:"View environment manifest",viewShort:"View manifest",unavailable:"No manifest available"},buildDetails:{title:"Build details",closeLabel:"Close build details",currentStep:"Current step",waiting:"Waiting for build information",elapsed:"Elapsed",sourceCommit:"Source commit",openCodePipeline:"View in CodePipeline",starting:"Starting",rebuild:"Rebuild"},git:{sectionLabel:"Public code repository",address:"Git URL",ref:"Branch, tag, or commit",defaultBranch:"Default branch",inspecting:"Fetching the repository and looking for Dockerfiles",foundDockerfiles:"Found {{count}} Dockerfiles in commit {{commit}}.",savedDockerfileLoaded:"Loaded the saved Dockerfile. Inspect the repository again to check for updates.",noDockerfile:"No Dockerfile was found. Check the branch or repository contents.",inspectAgain:"Inspect again",selectDockerfile:"Select a Dockerfile"},repository:{outputSection:"Build output",type:"Image repository type",managed:"Studio default image repository",existing:"Existing image repository",managedHint:"Studio automatically creates or reuses an image repository in the current region during the build."},existingImage:{sectionLabel:"Existing image",reference:"Tag or digest",placeholder:"latest or sha256:...",hint:"Enter an image tag or a complete digest beginning with sha256:."},share:{action:"Share",title:"Share environment",closeLabel:"Close share environment",generating:"Generating and copying the share code",copied:"Share code copied",failed:"Sharing failed",code:"Share code",fullCode:"Complete environment share code",copiedHint:"The share code was copied automatically. You can also view or copy it here.",copyFailedHint:"Automatic copy failed. Copy the share code above manually or try again.",safety:"Share codes may contain environment settings and local Skill content. Send them only to trusted recipients.",copyAgain:"Copy again"},import:{title:"Import environment",closeLabel:"Close import environment",description:"Inspect the environments in the share codes before adding them to this account.",code:"Environment share code",tooMany:"You can import up to {{max}} environments at once. {{count}} share codes were found.",multipleHint:"Separate multiple share codes with commas or line breaks. Duplicates are ignored automatically.",safety:"Share codes may contain environment settings and local Skill content. Import them only from trusted sources.",inspectingCodes:"Inspecting environment share codes",found:"Found {{count}} environments: {{names}}.",itemError:"Share code {{index}}: {{error}}",invalidCode:"Invalid share code.",noResult:"The service returned no import result for this share code.",partial:"Imported {{created}} environments; {{remaining}} remain. Valid failed items can be retried.",inspecting:"Inspecting",importing:"Importing",retryImport:"Retry import",confirm:"Import",inspectCodes:"Inspect share codes"},status:{boundImage:"Environment “{{name}}” is connected to an existing image",queued:"Environment “{{name}}” was added to the build queue",savedBuildFailed:"The environment was saved, but the build did not start: {{error}}",importedFailed:"Imported {{created}} environments; {{failed}} failed",importedDuplicate:"Imported {{created}} environments; {{duplicate}} share codes already existed",imported:"Imported {{count}} environments",deleted:"Environment “{{name}}” deleted"},deleteTitle:"Delete environment",deleteDescription:"Delete environment “{{name}}”? This cannot be undone.",errors:{repositoryRequired:"Enter a public code repository URL.",repositoryHttps:"Enter the HTTPS URL of a public repository.",repositoryInvalid:"Enter a valid public repository HTTPS URL.",imageReferenceWhitespace:"A tag or digest cannot contain spaces.",imageDigestInvalid:"The digest must be a complete sha256 value.",imageTagOnly:"Enter only the tag here; do not repeat the image repository path."}},Fhe={searchPlaceholder:"Search resource names",emptyMessage:"No options available",searchAriaLabel:"Search {{label}}",loadingMore:"Loading more resources…"},Bhe={retryDeployment:"Retry deployment",retrying:"Retrying…",collapse:"Collapse error details",expand:"Expand full error details",copy:"Copy full error details"},Uhe={steps:"Build steps",log:"Build log",syncing:"Syncing",loadFailed:"Failed to load",synced:"Synced",recentOnly:" · Recent logs only",copiedLog:"Build log copied",copyLog:"Copy build log",copied:"Copied",copy:"Copy",logContent:"Build log content",waiting:"Waiting for CodePipeline logs…",empty:"No build logs"},Qhe={defaultLabel:"Studio default environment",defaultDescription:"Use the standard runtime environment provided by Studio",status:{notBuilt:"Not built",preparing:"Preparing",queued:"Queued",building:"Building",scanning:"Scanning",available:"Available",failed:"Failed"},label:"Runtime environment",placeholder:"Select a runtime environment",search:"Search runtime environments",loading:"Loading runtime environments…",loadFailed:"Failed to load runtime environments",noMatches:"No matching runtime environments",unavailable:"No runtime environments are currently available",selectionUnavailable:"The selected runtime environment is unavailable. Select another one.",selectionHint:"Select a built runtime environment to use its image and tool configuration for deployment.",versionChanged:"The selected environment version has changed. Review it before continuing.",versionMissing:"The selected environment version no longer exists. Select another one.",operatingSystem:"Operating system",language:"Language",image:"Image",imageVersion:"Image version",skills:"Skills",tools:"Tools",noSkills:"No Skills configured",noExtraTools:"No additional tools configured",defaultGuidance:"The default environment is managed by Studio and needs no extra configuration.",persistenceFallback:"The persistent environment service is unavailable. The default environment is being used.",emptyFallback:"No custom environments are available."},zhe={repository:"GitHub repository",githubUrl:"GitHub URL",token:"Token",sessionToken:"{{provider}} Session Token",runtime:"Runtime",commit:"Commit",workflow:"Workflow",syncFailed:"Failed to sync GitHub code",status:{mounted:"Mounted",bound:"Bound",synced:"Synced",created:"Created"},volcengine:"Volcengine",mountDelivery:"Enable continuous delivery",selectedForDeployment:"Selected for deployment",mountOnDeploy:"Enable continuous delivery on deploy",syncCode:"Sync code",deliveryMode:"GitHub delivery mode",sourceSync:"GitHub code sync",delivery:"GitHub delivery",loading:"Loading",running:"Running",runtimeDeliveryHint:"Write an AgentKit Runtime GitHub Actions workflow so future GitHub commits update the bound Runtime.",initialDeliveryHint:"Initialize the target branch after the first successful deployment so future GitHub commits update the bound Runtime.",sourceSyncHint:"Studio pushes directly to the target branch. Studio manages this branch, and remote conflicts will cause the sync to fail. Use the deployment button to publish the Runtime.",tokenPlaceholder:"repo or contents:write permission",getToken:"Get token",hideToken:"Hide token",showToken:"Show token",tokenHelp:"The token is used only for this operation and is cleared from the form after success.",targetBranch:"Target branch",actionsSecretPlaceholder:"Used to write a GitHub Actions secret",sessionTokenPlaceholder:"Optional temporary credential",syncing:"Syncing…",pendingHint:"Continuous delivery is selected. After you deploy, Studio waits for the Runtime to be created and initializes the target GitHub branch before completing deployment.",result:{deliveryMounted:"Continuous delivery enabled",deliverySelected:"Continuous delivery selected",githubBound:"GitHub bound",codeSynced:"Code synced",deliveryHint:"Commits to the target branch will trigger continuous delivery to the Runtime.",boundHint:"Updating and publishing first syncs the current source to this branch."},branch:"Branch",viewPr:"View PR",createFailed:"Creation failed",phase:"Phase",log:"Log"},Vhe={name:"Feishu",enabling:"Enabling and updating configuration…",description:"Receive messages and reply through a Feishu bot",configuration:"Feishu configuration",configurationMode:"Feishu configuration mode",automatic:"Automatic",manual:"Manual",cancelling:"Cancelling…",scanToCreate:"Scan to create",scanDescription:"Credentials are filled in after authorization",generateQrCode:"Generate QR code",qrCodeAlt:"Feishu bot configuration QR code",scanToConfirm:"Scan with Feishu to confirm",expiresIn:"Expires in {{time}}",created:"Bot created",credentialsFilled:"App credentials filled in automatically",qrCodeExpired:"QR code expired",automaticFailed:"Automatic configuration failed",regenerateQrCode:"Generate a new QR code.",configuredPlaceholder:"Configured; leave blank to keep it",appSecretPlaceholder:"Enter App Secret",hideSecret:"Hide App Secret",showSecret:"Show App Secret"},Hhe={mode:{auto:"Create automatically",autoDescription:"Create required resources during deployment",recommended:"Recommended",create:"Specify names",createDescription:"Create or reuse resources with the specified names",existing:"Select existing",existingDescription:"Select existing resources from the current account"},selectExisting:"Select an existing resource",searchResource:"Search resource names",noMatch:"No matching resources",noAvailable:"No resources available",searching:"Searching cloud resources…",loading:"Loading cloud resources…",noMatchSentence:"No matching resources.",noAvailableSentence:"No resources available.",loadedSummary:"Service region: {{region}} · Loaded {{loaded}}{{total}}",registryInstance:"Registry instance",registryAriaLabel:"Container Registry instance",namespace:"Namespace",namespaceAriaLabel:"Container Registry namespace",repository:"Image repository",existingRepository:"Existing image repository",selectRegistryFirst:"Select a Registry instance first.",selectNamespaceFirst:"Select a Namespace first.",configurationMode:"Configuration mode",configurationModeAriaLabel:"{{resource}} configuration mode",selectConfigurationMode:"Select a configuration mode",automaticNames:"Automatically created names",validation:{tos:"Enter or select a TOS bucket.",cr:"Enter or select a CR instance, namespace, and image repository.",codePipeline:"Enter or select a CodePipeline Workspace and Pipeline.",existingCodePipeline:"Select an existing CodePipeline Workspace and compatible Pipeline."},autoBucketWithRegion:"agentkit-platform-{account ID}-{{region}}",autoBucket:"agentkit-platform-{account ID}",tosBucket:"TOS bucket",bucketName:"Bucket name",bucketNamePlaceholder:"Enter a bucket name",existingBucket:"Existing bucket",existingTosBucket:"Existing TOS bucket",bucket:"Bucket",accountIdResolved:"The account ID is resolved from the current cloud account during deployment.",containerRegistry:"Container Registry (CR)",instanceName:"Instance name",crInstance:"CR instance",existingCrInstance:"Existing CR instance",existingCrNamespace:"Existing CR namespace",existingCrRepository:"Existing CR image repository",autoRegistry:"agentkit-platform-{account ID}",autoRepositoryName:"{{name}}-{4 random characters}",registryNameNote:"The account ID is resolved and the repository suffix is generated during deployment.",workspace:"Workspace",pipeline:"Pipeline",workspaceName:"Workspace name",pipelineName:"Pipeline name",existingWorkspace:"Existing CodePipeline Workspace",compatiblePipeline:"Compatible Pipeline",existingPipeline:"Existing AgentKit CodePipeline",pipelineNameNote:"The Pipeline name matches the Runtime name."},qhe={commit:"Commit",steps:{permissions:"Preflight OTA permissions",resolving:"Resolve target version",downloading:"Download and verify the full update package",preparing:"Prepare VeFaaS Function code",provisioning:"Check and provision Studio cloud resources",scheduler:"Update the scheduled task service",submitting:"Submit the Function update",publishing:"Publish a new Revision and restart the service"},stages:{permissions:"Preflight OTA permissions",resolving:"Resolve version details",downloading:"Download update package",preparing:"Prepare Function code",provisioning:"Provision Studio cloud resources",scheduler:"Update scheduled task service",submitting:"Submit Function update",publishing:"Publish Revision",checking:"Check for updates",unknown:"Unknown stage"},duration:{seconds:"{{count}} seconds",minutesSeconds:"{{minutes}} min {{seconds}} sec"},logPermissionPrefix:"Unable to read VeFaaS release logs. The Function role lacks ",logPermissionSuffix:"; the update will continue.",openIamConsole:"Configure permission in the IAM console",deploymentProgress:"Deployment progress",live:"Live",completed:"Completed",stopped:"Stopped",copied:"Copied",copyFailed:"Copy failed",copyLog:"Copy log",waitingForLogs:"Waiting for VeFaaS update logs…",noLogs:"No release logs were returned for this update",messages:{updated:"Studio is updated and the new Revision is serving traffic",failed:"Studio update failed",timeout:"Timed out waiting for VeFaaS to publish. Check for updates again later.",submitted:"Update submitted. Waiting for VeFaaS to publish the new version.",connectionSwitched:"The connection changed. Confirming the new version status."},checkingPermissions:"Checking OTA permissions",authorizationRequired:"IAM authorization required",updating:"Updating Studio",updated:"Studio updated",updateToVersion:"Update Studio to {{version}}",checkPermissions:"Check update permissions",authorizationNeeded:"Authorization required",updatingShort:"Updating",refreshForNewVersion:"Refresh to use the new version",updateFailed:"Update failed",updateNow:"Update now",newVersionAvailable:"New version available",dialog:{failed:"Studio update failed",checkingPermissions:"Checking update permissions",authorizationRequired:"IAM authorization required",updating:"Updating Studio",completed:"Studio update complete",newVersion:"New version available"},permissionCheck:"Checking every IAM permission required by OTA and scheduled tasks…",permissionCheckHint:"Downloads and cloud-resource updates begin only after all permissions are available.",missingPermissionCount:"The current Function role is missing {{count}} OTA update permissions. No cloud resources have been changed.",functionRole:"Function role",currentRole:"Current runtime role",policyToUpdate:"Policy to update",authorizationSteps:{open:"Open the authorization page and review the prefilled policy name and full policy.",debug:"Select “Start debugging” on the page to apply the policy update.",return:"Return to this window and select “Authorized, check again”."},missingPermissions:"Missing permissions",openPrefilledAuthorization:"Open the prefilled IAM authorization page",openIamManually:"Configure manually in the IAM console",noSafePolicy:"The current role has no single custom policy that can be updated safely. Ask an administrator to add the permissions above to this role.",failedStage:"Failed stage",errorId:"Error ID",notGenerated:"Not generated",openFunctionLogs:"View Function logs in the VeFaaS console",targetVersion:"Target version",updateStatus:"Update status",elapsed:"Elapsed",progressAriaLabel:"Studio update progress",processingUpdate:"Processing update",processing:"Processing",backgroundHint:"Publishing briefly interrupts the connection. Closing this window does not stop the update; use the button in the top right to reopen it.",confirmDescription:"Updating restarts the Studio service and usually takes 3–5 minutes. Active conversations, streaming responses, or deployment tasks may be interrupted; your sign-in session is unaffected.",selectVersion:"Select version",currentVersion:"Current version",changelog:"What's new",noChangelog:"No release notes",runInBackground:"Run in background",authorizedRecheck:"Authorized, check again",tryAgain:"Try again"},Whe={deploy:"Deploy",update:"Update",planHash:"Plan hash",backToConfiguration:"Back to configuration",releaseRegion:"Release region",deployRegion:"Deployment region",regionPreserved:"The existing Runtime deployment region is preserved during updates and cannot be changed.",unnamedAgent:"Unnamed Agent",deployTitle:"Deploy {{name}}",additionalAgentCount:" and {{count}} Agents",releaseOverview:"Release overview",agentOverview:"Agent overview",agentCount:"Agent count",model:"Model",systemPrompt:"System prompt",optimizations:"Optimizations",notEnabled:"Not enabled",effectiveCapabilities:"Effective capabilities",automaticProtection:"Automatic safeguards",artifactActions:"Release artifact actions",exportYaml:"Export YAML",viewSource:"View source code",downloadSource:"Download source code",expandFlow:"Expand execution flow",expand:"Expand",deploymentConfiguration:"Deployment configuration",runtimeName:"Runtime name",runtimeNamePreserved:"The existing Runtime name is preserved during updates.",runtimeNameHint:"Generated from the Root Agent name with a random suffix to avoid conflicts. Use 4–64 letters, numbers, hyphens, or underscores.",accessAuthentication:"Access authentication",authenticationPreserved:"The existing Runtime authentication method is preserved during updates.",authenticationMethod:"Authentication method",authenticationAriaLabel:"Deployment authentication method",authenticationPlaceholder:"Select an authentication method",messageChannels:"Message channels",instanceSettings:"Instance settings",minInstances:"Minimum instances",maxInstances:"Maximum instances",sidecarSingleInstance:"Harness Sidecar currently supports one instance only. The Runtime is fixed at 1–1.",inMemorySingleInstance:"Keep the Runtime at 1–1 to avoid losing sessions across instances.",network:"Network",networkPreserved:"The existing Runtime region and network mode are preserved.",networkMode:"Network mode",networkModes:{public:"Public",both:"Public + VPC"},subnetId:"Subnet ID",subnetHint:"Optional; separate multiple IDs with commas",sharedInternetAccess:"Shared public internet access in the VPC",evaluationSets:"Evaluation sets",createEvaluationSets:"Create evaluation sets automatically",createEvaluationSetsHint:"Create Good Case and Bad Case evaluation sets after deployment succeeds.",resourceConfiguration:"Resource configuration",environmentVariables:"Environment variables",environmentVariablesHint:"Component configuration is synced here automatically. Review the final values before deployment.",itemCount:"{{count}} items",addVariable:"Add variable",componentGenerated:"Generated from components",injectedByApiKey:"Injected from the selected API key",envNameAriaLabel:"{{key}} environment variable name",envDescriptionAriaLabel:"{{key}} description: {{description}}",openOpenViking:"Open OpenViking {{label}}",openOpenVikingAriaLabel:"{{key}}: open OpenViking {{label}}",requiredEmpty:"Required; no value entered",optionalEmpty:"Optional; no value entered",envValueAriaLabel:"{{key}} environment variable value",automatic:"Automatic",synced:"Synced",customModelCredentials:"Custom model credentials",releaseOnlySecret:"Required; used only for this release",thisRelease:"This release",customVariables:"Custom variables",value:"Value",deleteVariable:"Delete variable",deploymentProgress:"Deployment progress",retryUpdate:"Retry update",retryDeploy:"Retry deployment",updateSucceeded:"Update succeeded",deploySucceeded:"Deployment succeeded",region:"Region",agentName:"Agent name",apiEndpoint:"API endpoint",connecting:"Connecting…",chatNow:"Chat now",console:"Console",actionInProgress:"{{action}} in progress…",checkingName:"Checking name…",retryAction:"Retry {{action}}",flowPreview:"Execution flow preview",executionFlow:"Execution flow",flowPreviewHint:"Read-only preview; zoom and pan the canvas",closeFlowPreview:"Close execution flow preview",agentAdded:'Agent "{{name}}" was added to the selector in the top left.',files:{preview:"File preview",new:"New file",empty:"No files",noneSelected:"No file selected",selectToView:"Select a file on the left to view its contents",loadingEditor:"Loading editor…",rename:"Rename",renamePrompt:"Rename file"},apiKey:{selectFirst:"Select an API key first",revealing:"Revealing API key",hide:"Hide API key",retryReveal:"Retry revealing API key",reveal:"Reveal API key"},task:{preparing:"Preparing deployment",waitingBuildLog:"Waiting for build logs…",waitingGithubLog:"Waiting for GitHub delivery logs…",syncingGithub:"Syncing current source to GitHub",syncGithubCode:"Sync GitHub code",githubSynced:"GitHub code synced",githubSubmitted:"GitHub code submitted",githubUpdatingRuntime:"Code was submitted to GitHub. GitHub Actions is updating the same Runtime.",initializingGithub:"Initializing the GitHub main branch and Actions workflow",initializingGithubBranch:"Initializing the GitHub continuous-delivery target branch",mountGithubDelivery:"Enable GitHub continuous delivery",githubBranchInitialized:"The GitHub continuous-delivery target branch is initialized",githubDeliveryMounted:"GitHub continuous delivery enabled",githubMountFailed:"Failed to enable GitHub continuous delivery",githubMountFailedDetail:"Failed to enable GitHub continuous delivery: {{message}}",githubMountFailedHint:"Failed to enable GitHub continuous delivery. See the GitHub log for details.",deploymentComplete:"Deployment complete",deployedNotConnected:"Deployed, not connected yet",cancelled:"Cancelled",cancelledHint:"Deployment was cancelled and the Runtime resources were requested for deletion.",deploymentStatusUnconfirmed:"Deployment status unconfirmed",deploymentFailed:"Deployment failed",buildFailedHint:"Image build failed. See the build log for details."},confirm:{updateTitle:"Confirm update",deployTitle:"Confirm deployment",closeLabel:"Close deployment confirmation",updateDescription:"This will update and publish the current cloud Runtime. It may take a few minutes. Continue?",deployDescription:"This will create a new cloud Runtime. Deployment may take a few minutes. Continue?",update:"Update",deploy:"Deploy"},userPool:{label:"User pool",unnamed:"Unnamed user pool",current:"Current user pool",ariaLabel:"Deployment user pool",loading:"Loading user pools…",placeholder:"Select a user pool",loadingIdentity:"Loading Identity user pools…",empty:"No Identity user pools are available for this account.",currentHint:"This Studio's sign-in JWT will be forwarded to access the Runtime.",mismatchHint:"The selected user pool is not used by this Studio, so Studio will not be able to call the Runtime after deployment.",markedHint:"The user pool used by this Studio is marked in the list."},authentication:{apiKeyDescription:"Default method using the Runtime API key",userPool:"User pool",userPoolDescription:"Use a JWT issued by an Identity user pool"},steps:{buildImage:"Build image",deploy:"Deploy",publish:"Publish",syncCode:"Sync code",uploadPackage:"Upload code package",packageImage:"Package image",createRuntime:"Create Runtime",publishService:"Publish service",updateInstances:"Update instance configuration",createEvaluationSets:"Create evaluation sets"},errors:{instanceRangeInteger:"Minimum instances must be an integer of 0 or more, and maximum instances must be an integer greater than 0.",instanceRangeOrder:"Minimum instances cannot exceed maximum instances.",selectApiKey:"Select an API key in the model configuration first.",loadApiKey:"Failed to load the API key. Try again.",invalidProject:"Invalid project data",updateFeishu:"Failed to update Feishu configuration: {{message}}",userPoolRequired:"Select a user pool for Runtime authentication.",vpcRequired:"Enter a VPC ID when using a VPC network.",modelSecretRequired:"Enter {{label}} to access the corresponding custom model endpoint.",managedApiKeyRequired:"{{requirement}}. Return to model configuration and select an API key first.",feishuEnvRequired:"Enter {{field}} after enabling Feishu.",runtimeNameExists:"This Runtime name already exists. Change it and try again.",deployedButGithubMountFailed:"Deployment succeeded, but enabling GitHub continuous delivery failed: {{message}}",deployedButGithubBindFailed:"Deployment succeeded, but binding GitHub failed: {{message}}",deploymentStatusUnconfirmed:"The connection was interrupted, so the final deployment status cannot be confirmed. The task may still be running in the cloud. Check the same task in AgentKit or CodePipeline and avoid a duplicate deployment.",failedAtStage:"{{action}} failed during {{stage}}: {{message}}",noAgentAtEndpoint:"Connected successfully, but no Agents were found at this endpoint (/list-apps is empty).",addAgent:"Failed to add Agent: {{message}}",modelApiKeyRequired:"Enter the API key for this model endpoint."}},Khe={title:"Workspaces",detail:"Workspace details",create:"New workspace",editorDescription:"Group frequently used environments. An environment can belong to multiple workspaces.",backToList:"Back to workspaces",environmentCount_one:"{{count}} environment",environmentCount_other:"{{count}} environments",createdAt:"Created",updatedAt:"Last updated",basicInfo:"Basic information",namePlaceholder:"For example: Content production",descriptionPlaceholder:"Describe what this workspace is for",selectedEnvironmentCount:"{{count}} selected; they can also be reused in other workspaces",searchAvailableEnvironments:"Search available environments",searchEnvironments:"Search environments",noAvailableEnvironments:"No environments are available to add",createEnvironmentFirst:"Create and build an environment on the Environments page first.",noMatchingEnvironments:"No matching environments",tryAnotherName:"Try searching for another name.",environmentStatus:{available:"Available",building:"Building",notBuilt:"Not built"},added:"Added",saved:"Workspace “{{name}}” saved",resourceType:"Workspace resource type",searchWorkspaces:"Search workspaces",loadFailed:"Unable to load workspaces",noMatchingWorkspaces:"No matching workspaces",tryAnotherNameOrEnvironment:"Try another name or environment",noEnvironmentAdded:"No environments added",environmentMissing:"Environment missing",availableFraction:"{{available}}/{{total}} available",available:"Available",availableCount:"{{count}} available",updated:"Updated",addEnvironment:"Add environment",deleteTitle:"Delete workspace",deleteDescription:"Delete workspace “{{name}}”? Its environments will not be deleted.",deleted:"Workspace “{{name}}” deleted",clipboardPermissionError:"Could not read the clipboard. Allow clipboard access, or open Import environment and paste the share code manually.",clipboardUnsupported:"This browser cannot read the clipboard automatically. Open Import environment and paste the share code manually.",codeProjects:"Code projects"},Ghe={back:"Back",detailNavigation:"Detail navigation",noData:"No data",actions:"Actions",moreActions:"More actions for {{label}}",actionsFor:"Actions for {{label}}",loading:"Loading resources…"},Xhe={addSkill:"Add Skill",remove:"Remove {{name}}",confirmRemoveRuntime:"Remove the running Skill “{{name}}” from the new version?",selectedCount:"Added skills · {{count}}",close:"Close {{label}}",sources:{runtime:"Running source · Preserved as-is; remove it or replace it with a Skill of the same name",local:"Local",skillspace:"AgentKit Skills Center",skillhub:"Volcengine Find Skill marketplace"},tabs:{local:"Local files",localShort:"Local files",skillspace:"AgentKit Skills Center",skillspaceShort:"AgentKit",skillhub:"Volcengine Find Skill marketplace",skillhubShort:"Find Skill"}},Yhe={tasks:{ppt:"Presentation",image:"Image generation",video:"Video generation"},prompts:{ppt:{quarterlyReview:"Review 【quarter】 business performance, highlighting metric gaps, causes, and recommended actions",projectUpdate:"Present the progress of 【project name】: milestones, risks, budget, and resource requests",solutionProposal:"Create a solution proposal for 【customer industry】: pain points, architecture, implementation plan, and benefits",industryAnalysis:"Analyze trends in 【industry topic】 and recommend strategic opportunities based on the competitive landscape"},image:{launchVisual:"Design a 【high-tech】 launch-event key visual for 【brand or product】",ecommercePoster:"Create an e-commerce poster for 【product name】 that highlights 【core selling point】 and brand colors",conceptRendering:"Create a photorealistic concept rendering of 【product or space】 in 【usage scenario】",socialGraphic:"Create a concise, professional corporate social graphic for 【campaign theme】"},video:{brandFilm:"Create a 30-second promotional video for 【brand name】 that highlights 【brand value】",productLaunch:"Create a 45-second launch video for 【product name】 covering the pain point, features, scenarios, and call to action",trainingVideo:"Create a corporate training video about 【training topic】 that clearly explains 【key procedure or policy】",eventTeaser:"Create a 20-second teaser for 【event name】 with highlights, time and location, and registration details"}},firstFrame:"First frame",videoToEdit:"Video to edit",baseVideo:"Base video",optimizeSkillPlaceholder:"Describe the skill you want to improve…",createSkillPlaceholder:"Describe the skill you want to create…",createVideoPlaceholder:"Describe the video you want to create…",messageAgentPlaceholder:"Message {{name}}…",selectAgentFirst:"Select an agent first",selectSkillFirst:"Select the Skill you want to improve first",availableSkills:"Available skills",availableSubagents:"Available sub-agents",invokeSkill:"Use a skill",useSubagent:"Use a sub-agent",loadingCapabilities:"Loading Agent capabilities…",noMatchingSkills:"No matching skills for this Agent",noMatchingSubagents:"No matching sub-agents for this Agent",skillFallbackDescription:"Load and run this skill",agentFallbackDescription:"Hand this turn to the Agent",skill:"Skill",uploadImage:"Upload image",uploadDocument:"Upload document or PDF",uploadVideo:"Upload video",taskMode:"Task mode",selectTaskMode:"Select a task mode",loadingGenerationModel:"Loading generation model",modelUnavailable:"Model unavailable",cancelTask:"Cancel {{task}} task",stopGenerating:"Stop generating",viewVideoProgress:"View video generation progress",send:"Send",selectTaskType:"Select a task type",enterprisePrompts:"{{task}} enterprise prompts",sessionId:"Session ID",sessionIdLabel:"Session ID: ",initializing:"Initializing",copied:"Copied",copySessionId:"Copy session ID",sessionIdCopied:"Session ID copied",disclaimer:"Responses may be inaccurate",viewLogs:"View logs"},Zhe={selectAgent:"Select Agent",noLocalAgents:"No local Agents.",searchRuntime:"Search Runtime names",mineOnly:"Created by me",noRuntimes:"No Runtimes.",unsupported:"Unsupported",createdByMe:"Created by me",connecting:"Connecting…",connected:"Connected",connect:"Connect",viewInfoFor:"View information for {{name}}",viewInfo:"View information",agentAndRuntimeInfo:"Agent and Runtime information",detailType:"Detail type",agentInfo:"Agent information",runtimeInfo:"Runtime information",loadingAgentInfo:"Loading Agent information…",cannotLoadAgentInfo:"Agent information is temporarily unavailable",unnamedAgent:"Unnamed Agent",subagents:"Sub-agents",tools:"Tools",skills:"Skills",previewUnsupported:"Preview unavailable",mountedComponents:"Mounted components",noMoreAgentInfo:"No additional Agent configuration information.",local:"Local",model:"Model",status:"Status",memoryMb:"Memory {{value}} MB",instances:"Instances {{min}}–{{max}}",resources:"Resources",version:"Version",loadingDetails:"Loading details…",environmentVariables:"Environment variables",errors:{notFound:"This Runtime no longer exists or the list is out of date. Refresh the list and try again.",accessDenied:"This account cannot access the Runtime. Check its Project and access permissions.",previewUnsupported:"This Agent Server version does not support information previews.",unavailable:"This Runtime is temporarily unavailable. Confirm that its status is Ready and try again.",timeout:"Loading timed out. Try again."},componentKinds:{knowledgebase:"Knowledge base",memory:"Memory",prompt_manager:"Prompt manager",example_store:"Example store",run_processor:"Run processor",tracer:"Trace",toolset:"Toolset",plugin:"Plugin",other:"Other"},runtimeStatus:{ready:"Ready",unreleased:"Unreleased",running:"Running",active:"Running",creating:"Creating",pending:"Pending",deploying:"Deploying",updating:"Updating",failed:"Failed",error:"Error",stopping:"Stopping",stopped:"Stopped",deleting:"Deleting",deleted:"Deleted"}},Jhe={agent:"Agents",agentTypes:{general:"General Agents",codex:"Codex","deepseek-harness":"DeepSeek",openclaw:"OpenClaw",hermes:"Hermes"},creator:"Created by",namedAgent:"{{name}} Agent",storageLocation:"Storage location",currentBrowser:"Current browser",region:"Region",viewDeploymentProgress:"View deployment progress for {{name}}",viewRuntimeDetails:"View Runtime details for {{name}}",viewDetails:"View details for {{name}}",time:"Time",remainingTime:"Time remaining",expiringSoon:"Expiring soon",sandboxRemaining:"{{hours}} hr {{minutes}} min",wakeable:"Asleep",neverExpires:"Never expires",editDraftNamed:"Edit draft {{name}}",viewProgress:"View progress",deleteDraftNamed:"Delete draft {{name}}",recheckCompatibility:"Check chat compatibility for {{name}} again",connectedNamed:"{{name}} is connected",wakeAndChat:"Wake {{name}} and start chatting",chatWith:"Chat with {{name}}",waking:"Waking…",deploying:"Deploying",draft:"Draft",checking:"Checking",chatUnsupported:"Chat unsupported",checkFailed:"Check failed",creatorFilter:"Creator filter",agentType:"Agent type",searchAgents:"Search Agents",handoff:"Handoff",agentList:"{{type}} list",noMatchingAgents:"No matching Agents",adjustSearch:"Try adjusting the search or filters",noAgentType:"No {{type}}",noGeneralAgents:"No General Agents",createGeneralAgentDescription:"Create a General Agent to start building and chatting",createAgentType:"Create {{type}}",createAgent:"Create Agent",loadingMore:"Loading more Agents",scrollForMore:"Scroll down to load more",allLoaded:"All Agents loaded",deleteDraftTitle:"Delete draft?",deleteDraftDescription:"“{{name}}” cannot be recovered after deletion.",deleteDraft:"Delete draft",loadGeneralAgents:"Load General Agents",loadAgentType:"Load {{type}}",compatibility:{checking:"Requesting Runtime /list-apps to confirm that this Agent supports Studio chat.",empty:"Runtime /list-apps returned no available Agents, so chat is currently unavailable.",supported:"This Runtime supports Studio chat.",unknownError:"The Runtime /list-apps request failed without a recognizable error."},sandboxStatus:{ready:"Ready",wakeable:"Asleep",creating:"Creating",starting:"Starting",initializing:"Starting",pending:"Pending",running:"Running",failed:"Error",error:"Error",stopped:"Stopped",expired:"Expired",deleting:"Deleting",deleted:"Deleted",unknown:"Unknown status"},wakingHint:"Waking the agent. This may take some time."},epe={library:"Skill library",skill:"Skill",skills:"Skills",skillSpace:"Skill space",sandboxNotConfigured:"Dev Sandbox is not configured by an administrator",adminNotConfigured:"Not configured by an administrator",totalItems:"{{count}} items",cannotLoadSpaces:"Unable to load Skill spaces",someSpacesFailed:"Some Skill spaces failed to load",degradedRelationWarning:"Some relations are invalid. Readable skills have been restored.",downloadZip:"Download ZIP",optimize:"Optimize",closeSkillDetails:"Close Skill details",skillId:"Skill ID",allFiles:"All files",loadingSkillContent:"Loading Skill content…",noSkillContent:"This Skill has no SKILL.md content",addSkill:"Add Skill",localUpload:"Upload locally",localUploadDescription:"Select a ZIP file and upload it to the Skill space after validation",autoCreate:"Create automatically",autoCreateDescription:"Choose a model and style, then create a Skill through conversation",createSkill:"Create Skill",optimizeNamed:"Optimize {{name}}",deleteSkillConfirm:"Delete the entire Skill “{{name}}”? This affects every space that references it.",deleteSpaceConfirm:"Delete Skill space “{{name}}”? Make sure its Skills have been deleted first.",manageSpaceDescription:"Manage Skills in this space and create new versions",backToSpaces:"Back to Skill spaces",overview:"Overview",skillCount:"Skills",skillCountValue_one:"{{count}} Skill",skillCountValue_other:"{{count}} Skills",updatedAt:"Updated",skillsInSpace:"Skills in {{name}}",searchSkills:"Search Skills",cannotLoadSkills:"Unable to load Skills",noMatchingSkills:"No matching Skills",noSkills:"No Skills",tryAnotherName:"Try searching for another name",emptySkillsDescription:"Upload a Skill locally or create one automatically",actions:"Actions",spaceDetails:"Skill space details",editSpace:"Edit space",deleteSpace:"Delete space",searchSpaces:"Search Skill spaces",spaceList:"Skill space list",noMatchingSpaces:"No matching Skill spaces",createSpace:"Create Skill space",newSpace:"New space",loadingMoreSpaces:"Loading more Skill spaces",scrollForMore:"Scroll down to load more",allSpacesLoaded:"All Skill spaces loaded",errors:{loadSpaces:"Unable to load Skill spaces. Try again later.",loadSkills:"Unable to load Skills. Try again later.",loadSkillDetails:"Unable to load Skill details. Try again later.",deleteSkill:"Unable to delete the Skill",deleteSpace:"Unable to delete the Skill space",downloadSkill:"Unable to download the Skill"},status:{active:"Available",available:"Available",creating:"Creating",disabled:"Disabled",enabled:"Enabled",failed:"Error",inactive:"Inactive",pending:"Pending",published:"Published",ready:"Ready",released:"Published",running:"Running",success:"Healthy",unavailable:"Unavailable",unreleased:"Unreleased",updating:"Updating",unknown:"Unknown"},sharedSpace:"Enterprise shared space",sharedDescription:"Skills available to everyone, published and maintained by administrators",sharedVisibility:"Everyone",sharedPreparing:"Preparing shared space",sharedLoadFailed:"Shared space unavailable",sharedEmpty:"No shared skills yet. Skills published by administrators will appear here",requestPublication:"Request publication",reviewSubmitting:"Submitting…",reviewSubmitted:"Submitted",reviewFailed:"Could not submit the publication request",reviewStatusFailed:"Failed to load review status",reviewRetry:"Apply again",reviewPending:"Pending review",reviewApproving:"Publishing",reviewApproved:"Shared",reviewReturned:"Returned",reviewHistory:"Review history",skillDetailSections:"Skill detail sections",versions:{title:"Version management",refresh:"Refresh",uploading:"Uploading…",upload:"Upload new version",close:"Close",hint:"New versions become public after approval and do not replace published versions; the skill name in the ZIP must match the original",loading:"Loading versions…",loadFailed:"Unable to load versions",filesFailed:"Unable to load version files",uploadFailed:"Unable to upload the new version",submitFailed:"Unable to submit for review",retry:"Retry",empty:"No versions yet",current:"Current version",notSubmitted:"Not submitted",submitting:"Submitting…",submit:"Request publication",processing:"Version status: {{status}}",filesLoading:"Loading files…",filesEmpty:"No files",history:"Review history",shared:"Published"},author:"Author",authorName:"Author: {{name}}"},tpe={library:"Knowledge bases",createBase:"New knowledge base",editBase:"Edit knowledge base",invalidName:"The name must start with a letter and contain only letters, numbers, and underscores.",nameHelp:"Start with a letter. Use up to 48 letters, numbers, or underscores.",optionalDescription:"Description (optional)",descriptionOnly:"AgentKit currently supports updating only the knowledge base description.",previewWeb:"Preview web content",addData:"Add data",openOriginalWeb:"Open original page",backToEdit:"Back to edit",confirmAdd:"Confirm and add",source:"Knowledge source",image:"Image",documentFile:"Document file",webPage:"Web page",webUrl:"Web page URL",generatingWebPreview:"Fetching the page and generating a Markdown preview",selectFile:"Select knowledge file",selectOrDropFile:"Select a file or drag it here",selectedFile:"{{size}} · Click to select another file",imageFileHelp:"PNG, JPG, and JPEG up to 200 MB",documentFileHelp:"PDF, PPTX, DOCX, XLSX, and TXT up to 200 MB",uploadingFile:"Uploading the file and adding it to the knowledge base",optionalName:"Name (optional)",optionalType:"Type (optional)",generatePreview:"Generate preview",uploadFile:"Upload file",editMetadata:"Edit knowledge metadata",knowledge:"Knowledge item",field:"Field",value:"Value",backToList:"Back to knowledge bases",metadataJson:"Metadata (JSON)",provider:"Provider",knowledgeId:"Knowledge ID",project:"Project",creator:"Created by",data:"Data",deleteInvalidAssociation:"Delete invalid association",noData:"This knowledge base has no data",addFirstData:"Add the first data item",format:"Format",size:"Size",searchData:"Search data",searchLibraryData:"Search knowledge base data",associationInvalid:"Association invalid",providerMissing:"The underlying Provider knowledge base no longer exists",noMatchingData:"No matching data",loadingMoreData:"Loading more data",retryLoading:"Retry loading",details:"Knowledge base details",searchBases:"Search knowledge bases",someBasesFailed:"Some knowledge bases are temporarily unavailable. Other available content is shown.",noMatchingBases:"No matching knowledge bases",noManagePermission:"You do not have permission to manage this knowledge base",loadingMoreBases:"Loading more knowledge bases",deleteBaseTitle:"Delete knowledge base?",deleteBaseDescription:"This removes the AgentKit association for {{name}}. If Studio created it, the Provider resource is also deleted. This cannot be undone.",deleteDocumentTitle:"Delete knowledge item?",deleteDocumentDescription:"This removes {{name}} from the Provider knowledge base. This cannot be undone.",preview:{processingTitle:"Data is being processed",processingDetail:"A preview will be available after parsing. Reload later.",failedTitle:"Data parsing failed",failedDetail:"Check the source file or page URL and add it again, or reload the latest status.",noParsedTitle:"No parsed content is available yet",noParsedDetail:"Text, tables, or page images will appear after the knowledge base finishes parsing this file.",noMediaTitle:"No media preview is available yet",noMediaDetail:"The knowledge base has not returned an accessible media preview. Reload later.",noDataTitle:"No data is available to preview",noDataDetail:"The knowledge base has not returned parsed results. Reload later.",attachmentError:"The attachment cannot be previewed. Try again later.",imageAlt:"Knowledge data image",audioUnsupported:"This browser does not support audio previews.",videoUnsupported:"This browser does not support video previews.",namedPdf:"{{name}} PDF preview",pdf:"PDF preview",openPdf:"If it cannot be displayed, open the PDF in a new window",fileUnsupported:"This format cannot be previewed directly online. Parsed content is shown when available.",openOriginalFile:"Open original file",loading:"Loading data preview",openOriginalHint:"You can open the original page to view the source content.",chunk:"Chunk {{index}}",loadingMore:"Loading more",loadMore:"Load more"},errors:{fileTooLarge:"A file cannot exceed 200 MB",invalidImageType:"Select a PNG, JPG, or JPEG image",invalidDocumentType:"Select a PDF, PPTX, DOCX, XLSX, or TXT file",createBase:"Unable to create the knowledge base",updateBase:"Unable to update the knowledge base",metadataObject:"Metadata must be a JSON object",metadataFormat:"Invalid metadata format",noWebPreview:"The page has no Markdown content to preview",addWeb:"Unable to add the web page",previewWeb:"Unable to generate the web page preview",uploadFile:"Unable to upload the file",updateDocument:"Unable to update the knowledge item",loadPreview:"Unable to load the data preview",loadMoreBases:"Unable to load more knowledge bases",loadBases:"Unable to load knowledge bases",loadMoreData:"Unable to load more data",loadData:"Unable to load data",deleteBase:"Unable to delete the knowledge base",deleteDocument:"Unable to delete the knowledge item"}},BUe={common:Phe,agentKitPromo:Dhe,systemInfo:Mhe,agentWorkspace:Lhe,environmentCenter:$he,deploymentSelect:Fhe,deploymentError:Bhe,studioBuildProgress:Uhe,cloudEnvironment:Qhe,githubCicd:zhe,feishuDeployment:Vhe,deploymentResources:Hhe,studioUpdate:qhe,projectPreview:Whe,workspace:Khe,resourceCollection:Ghe,skillSourcePicker:Xhe,composer:Yhe,agentSelector:Zhe,myAgents:Jhe,skillCenter:epe,knowledge:tpe},UUe=Object.freeze(Object.defineProperty({__proto__:null,agentKitPromo:Dhe,agentSelector:Zhe,agentWorkspace:Lhe,cloudEnvironment:Qhe,common:Phe,composer:Yhe,default:BUe,deploymentError:Bhe,deploymentResources:Hhe,deploymentSelect:Fhe,environmentCenter:$he,feishuDeployment:Vhe,githubCicd:zhe,knowledge:tpe,myAgents:Jhe,projectPreview:Whe,resourceCollection:Ghe,skillCenter:epe,skillSourcePicker:Xhe,studioBuildProgress:Uhe,studioUpdate:qhe,systemInfo:Mhe,workspace:Khe},Symbol.toStringTag,{value:"Module"})),npe="User management",ipe="{{count}} members",rpe="User",spe="Role",ope="Account status",ape="Last sign-in",lpe="Actions",cpe="Change role",upe="Close",dpe="Save role",fpe="Saving…",hpe="Cancel",ppe="Back",mpe="User pool",gpe="Volcengine Identity",bpe="Search name, email or user ID",ype="Search",vpe="Filter by role",xpe="All roles",wpe="Refresh",Ope="Loading users…",kpe="Updated at {{time}}",Spe="{{name}} is now {{role}}",Epe="Retry",Cpe="You",Tpe="Initial super administrator",Ape="The initial super administrator cannot be demoted here",_pe="The new permissions apply when the user refreshes Studio",jpe="Role needs confirmation",Npe="No matching users",Rpe="Try another search or role",Ipe="Users appear here after signing in or joining this user pool",Ppe="{{count}} users",Dpe="Previous",Mpe="Next",Lpe="Not signed in yet",$pe="Not provided",Fpe={super_admin:"Super administrator",admin:"Administrator",developer:"Developer",user:"User"},Bpe={super_admin:"Manage all resources, users and role assignments",admin:"Manage Studio resources",developer:"Develop agents and manage your own resources",user:"Use agents and personal features"},Upe={EXTERNAL_PROVIDER:"Active",CONFIRMED:"Active",NORMAL:"Active",ENABLED:"Active",ACTIVE:"Active",UNCONFIRMED:"Unverified",DISABLED:"Disabled",FORBIDDEN:"Disabled",LOCKED:"Locked",SUSPENDED:"Suspended",FORCE_CHANGE_PASSWORD:"Password change required"},Qpe={request_failed:"The request did not finish. Refresh the list to confirm its current state before retrying",invalid_response:"The user service returned an invalid response. Refresh and try again",identity_unavailable:"Identity is unavailable. Try again later or check service permissions",identity_resource_missing:"The user or user pool no longer exists. Refresh the list",super_administrator_required:"Only super administrators can manage users",sign_in_required:"Sign in and try again",user_not_in_pool:"Your account does not belong to this user pool",user_disabled:"Your account is disabled",protected_administrator:"The initial super administrator cannot be demoted",cannot_demote_self:"You cannot demote your own super administrator role",role_change_conflict:"The role has changed. Close this dialog and refresh the list before retrying",cross_origin_request:"Change roles from the current Studio page"},QUe={title:npe,memberCount:ipe,user:rpe,role:spe,status:ope,lastLogin:ape,actions:lpe,changeRole:cpe,close:upe,save:dpe,saving:fpe,cancel:hpe,back:ppe,pool:mpe,volcengineIdentity:gpe,searchPlaceholder:bpe,search:ype,filterRole:vpe,allRoles:xpe,refresh:wpe,loading:Ope,updatedAt:kpe,saved:Spe,retry:Epe,you:Cpe,initialAdministrator:Tpe,protectedExplanation:Ape,effectiveAfterRefresh:_pe,roleConflict:jpe,noUsers:Npe,tryAnotherSearch:Rpe,poolEmpty:Ipe,resultCount:Ppe,previous:Dpe,next:Mpe,neverLoggedIn:Lpe,unknown:$pe,roles:Fpe,descriptions:Bpe,states:Upe,errors:Qpe},zUe=Object.freeze(Object.defineProperty({__proto__:null,actions:lpe,allRoles:xpe,back:ppe,cancel:hpe,changeRole:cpe,close:upe,default:QUe,descriptions:Bpe,effectiveAfterRefresh:_pe,errors:Qpe,filterRole:vpe,initialAdministrator:Tpe,lastLogin:ape,loading:Ope,memberCount:ipe,neverLoggedIn:Lpe,next:Mpe,noUsers:Npe,pool:mpe,poolEmpty:Ipe,previous:Dpe,protectedExplanation:Ape,refresh:wpe,resultCount:Ppe,retry:Epe,role:spe,roleConflict:jpe,roles:Fpe,save:dpe,saved:Spe,saving:fpe,search:ype,searchPlaceholder:bpe,states:Upe,status:ope,title:npe,tryAnotherSearch:Rpe,unknown:$pe,updatedAt:kpe,user:rpe,volcengineIdentity:gpe,you:Cpe},Symbol.toStringTag,{value:"Module"})),zpe="Website integration",Vpe="Embed an AgentKit Runtime on your website as a floating chat window",Hpe="Back to automations",qpe="Add website",Wpe="Loading Runtime",Kpe="Select Runtime",Gpe="Website domain",Xpe="For example, xxxx.com or localhost:5173",Ype="Generating",Zpe="Generate token",Jpe="Added websites",eme="{{count}} website",tme="{{count}} websites",nme="Loading website integrations",ime="No website integrations yet",rme="Select a Runtime and enter a website domain to generate a token",sme="Embed instructions",ome="Place this code before the closing body tag on your website",ame="Copied",lme="Copy code",cme="Embed code will appear here after you add a website.",ume="Delete the website integration for {{domain}}?",dme={load:"Failed to load website integrations",create:"Failed to create website integration",delete:"Failed to delete website integration",noConversationalAgent:"No conversational Agent was found in this Runtime"},fme={requestFailed:"Request failed ({{status}})",greeting:"Hello. How can I help?",sessionFailed:"Could not start a chat session",unauthorized:"This website is not authorized to start a chat",conversationFailed:"The chat request failed. Try again shortly.",open:"Open Agent chat",close:"Close Agent chat",panelLabel:"Agent chat panel",assistant:"Agent assistant",online:"Online"},VUe={title:zpe,description:Vpe,backToAutomations:Hpe,addWebsite:qpe,loadingRuntime:Wpe,selectRuntime:Kpe,websiteDomain:Gpe,domainPlaceholder:Xpe,generating:Ype,generateToken:Zpe,addedWebsites:Jpe,websiteCount_one:eme,websiteCount_other:tme,loadingIntegrations:nme,delete:"Delete",emptyTitle:ime,emptyDescription:rme,embedMethod:sme,embedInstructions:ome,copied:ame,copyCode:lme,embedHint:cme,confirmDelete:ume,errors:dme,widget:fme},HUe=Object.freeze(Object.defineProperty({__proto__:null,addWebsite:qpe,addedWebsites:Jpe,backToAutomations:Hpe,confirmDelete:ume,copied:ame,copyCode:lme,default:VUe,description:Vpe,domainPlaceholder:Xpe,embedHint:cme,embedInstructions:ome,embedMethod:sme,emptyDescription:rme,emptyTitle:ime,errors:dme,generateToken:Zpe,generating:Ype,loadingIntegrations:nme,loadingRuntime:Wpe,selectRuntime:Kpe,title:zpe,websiteCount_one:eme,websiteCount_other:tme,websiteDomain:Gpe,widget:fme},Symbol.toStringTag,{value:"Module"})),hme={types:{all:"All types",document:"Documents",image:"Images",video:"Videos"},previewArtifact:"Preview {{name}}",moreActions:"More actions for {{name}}",actionMenu:"Actions for {{name}}",download:"Download",downloading:"Downloading",edit:"Edit details",delete:"Delete artifact",previewFailed:"Could not preview “{{name}}”: {{message}}",downloadStarted:"Download started for {{name}}",downloadFailed:"Could not download “{{name}}”: {{message}}",updated:"Updated {{name}}",deleted:"Deleted {{name}}",deleteFailed:"Could not delete “{{name}}”: {{message}}",typeFilter:"Artifact type",searchAria:"Search artifacts",searchPlaceholder:"Search artifacts or sessions",retry:"Retry",close:"Close",listAria:"Artifact list",loadFailed:"Could not load artifacts",loadDetailFallback:"Check the storage configuration and try again.",reload:"Reload",noMatch:"No matching artifacts",noArtifacts:"You do not have any artifacts yet",searchHint:"Try another search or artifact type",emptyHint:"Artifacts created in chats will appear here automatically",columns:{name:"Name",source:"Source",updatedAt:"Modified",actions:"Actions"},loadingMore:"Loading more artifacts",unknownTime:"Unknown time",preview:{close:"Close preview",meta:"{{type}} / Version {{version}}",loading:"Loading preview",alt:"Preview of {{name}}",loadFailed:"The preview could not be loaded. Try again later or download the file.",unsupported:"This format cannot be previewed online. Download the file to view it.",sourceAria:"Artifact source",agent:"Agent",session:"Session",tool:"Generated by",createdAt:"Created",fileSize:"File size",tags:"Tags",viewSession:"View session"},deleteDialog:{title:"Delete artifact?",description:"“{{name}}” will be permanently removed from the artifact library. The chat history will not be affected.",deleting:"Deleting",confirm:"Delete",close:"Close delete confirmation"},api:{withStatus:"{{message}} ({{status}})",listFailed:"Could not load the artifact library",syncFailed:"Could not sync chat artifacts",updateFailed:"Could not update the artifact",deleteFailed:"Could not delete the artifact",downloadFailed:"Could not download the artifact"}},pme={unknownSource:"Unknown source",unknownCreator:"Unknown creator"},mme={nameRequired:"Enter an artifact name",tooManyTags:"You can add up to {{max}} tags",tagTooLong:"Each tag can contain up to {{max}} characters",title:"Edit artifact details",subtitle:"The content file will not be modified",close:"Close edit dialog",name:"Name",description:"Description",descriptionPlaceholder:"Add its purpose, version, or usage notes",tags:"Tags",tagsPlaceholder:"Separate tags with commas, up to {{max}}",cancel:"Cancel",saving:"Saving",save:"Save"},gme={change:{added:"Added",modified:"Modified",deleted:"Deleted"},noChanges:"There are no source changes between these versions",chooseFile:"Select a file on the left to view its code",compareTitle:"Compare versions",workspaceTitle:"Source workspace",projectFallback:"Agent project",switchTheme:"Switch source theme",switchThemeTitle:"Switch to {{theme}} theme",themes:{dark:"dark",light:"light"},closeWorkspace:"Close source workspace",close:"Close",changedFiles:"Changed files",projectFiles:"Project files",changes:"Changes",files:"Files",openFiles:"Open files",noFileSelected:"No file selected",comparisonDirection:"Comparison direction",before:"Before optimization",after:"After optimization",loadingEditor:"Loading editor…",changedFileCount_one:"{{count}} file changed",changedFileCount_other:"{{count}} files changed",fileCount_one:"{{count}} file",fileCount_other:"{{count}} files",lineCount_one:"{{count}} line · UTF-8",lineCount_other:"{{count}} lines · UTF-8",viewSource:"View source",viewSourceAria:"View and edit project source"},bme={nav:"Search",selectAgent:"Select an Agent",checkingCapabilities:"Checking Agent capabilities",notMounted:"This Agent does not have {{label}} mounted",sources:{session:"Sessions",web:"Web",knowledge:"Knowledge base",memory:"Long-term memory"},webDescription:"Search with the web_search tool",backendLocal:"Local",failed:"Search failed: {{message}}",placeholder:{selectAgent:"Select an Agent first",web:"Search the web",knowledge:"Search {{name}}",knowledgeFallback:"this Agent's knowledge base",memory:"Search {{name}}",memoryFallback:"this user's long-term memory",session:"Search this Agent's sessions"},sourceTypeAria:"Search source: {{label}}",notSelected:"Not selected",sourceType:"Search source",selectSource:"Select a search source",noAgentHint:"Select an Agent to search its sessions, the web, and mounted data sources.",loadingCapabilities:"Loading this Agent's search capabilities…",sourceUnavailable:"This Agent does not have this data source mounted",instructions:{web:"Enter keywords and press Enter or select the button to search with web_search.",knowledge:"Enter a question to search this Agent's knowledge base.",memory:"Enter a clue to search long-term memories saved across this user's sessions.",session:"Enter keywords and press Enter or select the button to search this Agent's sessions."},noResults:"No results found for “{{query}}”.",knowledgeFragment:"Knowledge excerpt {{index}}",memoryFragment:"Memory excerpt {{index}}"},yme={title:"Developer Resources",sections:{documentation:{title:"Related links",description:"Open development documentation and common AgentKit destinations"},bestPractices:{title:"Best practices",description:"Learn from practical development, debugging, and deployment guidance"},showcases:{title:"Showcases",description:"Explore applications built with AgentKit"}},links:{veadkDocs:"VeADK documentation",cliDocs:"AgentKit CLI documentation",platformDocs:"AgentKit platform documentation",console:"AgentKit console"},articles:{veadkDevelopment:{title:"Develop and deploy an Agent with VeADK",description:"Build an Agent with VeADK and deploy it to AgentKit Runtime."},cliDevelopment:{title:"Develop and deploy an Agent with AgentKit CLI",description:"Create a project, debug an Agent, and deploy it with AgentKit CLI."},coverAlt:"Cover image for {{title}}"},showcases:{researchAssistant:{title:"Multi-agent research assistant",description:"Specialized Agents work together to research, analyze, and summarize findings."},multimodalAnalysis:{title:"Multimodal content analysis",description:"Understand images, documents, and video in a single session."},customerService:{title:"Customer service workspace",description:"Combine knowledge retrieval and tool calls to handle complex support requests."},webSearch:{title:"Web search Agent",description:"Search current web content and organize it into traceable answers."},a2uiApp:{title:"A2UI interactive app",description:"Let an Agent generate interactive interfaces as it works through a task."},previewAlt:"Interface preview for {{title}}"}},vme={title:"Library",untitledSession:"Untitled session",categoryAria:"Library categories",regionAria:"Region",tabs:{skills:"Skills",knowledge:"Knowledge",artifacts:"Artifacts"}},xme={title:"Manage Agents",subtitle:"Agents in AgentKit Runtime that you can manage",mainAgentOnly:"Only the main Agent is shown (control-plane information).",deleteConfirm:'Delete Agent "{{name}}"? Its Runtime will be permanently deleted.',regionFilterTitle:"Filter by region",regionFilterAria:"Region filter",regionAria:"Region",refresh:"Refresh",loading:"Loading…",empty:"You have not deployed any Agents.",connected:"Connected",connect:"Connect to this Agent",deleteRuntime:"Delete this Runtime",loadingDetail:"Loading details…",agentStructure:"Agent structure",secretHidden:"Sensitive value hidden. Select to reveal it.",revealSecret:"Show the value of {{key}}",fields:{model:"Model",description:"Description",status:"Status details",project:"Project",version:"Version",resources:"Resources",memory:"Memory",tool:"Tool",knowledge:"Knowledge",mcpToolset:"MCP Toolset",updatedAt:"Updated"},resource:{memory:"Memory {{value}} MB",instances:"Instances {{min}}-{{max}}",concurrency:"Concurrency {{value}}"},environmentVariables:"Environment variables",unnamed:"(Unnamed)"},wme={mainAgent:"Main Agent",subAgent:"Sub-agent {{index}}",itemCount_one:"{{count}} item",itemCount_other:"{{count}} items",info:"Agent information",infoAndTopology:"Agent information and topology",loadingInfo:"Loading Agent information…",unnamedAgent:"Unnamed Agent",tools:"Tools",toolList:"Tool list",studioTool:"Studio Tool",removeTool:"Remove tool {{name}}",remove:"Remove",notConfigured:"Not configured",addStudioTool:"Add Studio tools",addStudioToolHere:"Add Studio tools to this chat",skills:"Skills",skillList:"Skill list",previewUnsupported:"Preview is not supported",sessionEnvironment:"Session environment",environment:"Environment",agentCanvas:"Agent canvas",topology:"Structure",viewCanvasFullscreen:"View Agent canvas in full screen",viewFullscreen:"View full screen",executionCanvas:"Agent execution canvas",fullscreenExecutionCanvas:"Full-screen Agent execution canvas",closeFullscreenCanvas:"Close full-screen canvas",close:"Close",capabilitiesSubtitle:"Capabilities and collaboration topology",closeInfo:"Close Agent information",infoUnavailable:"Agent information is temporarily unavailable."},Ome={mountFailed:"Could not mount the environment",closeDialog:"Close environment dialog",addTitle:"Add environments",description:"Choose the Sandbox environments this Agent can use in the current session",closeAdd:"Close Add environments",searchAria:"Search environments",searchPlaceholder:"Search environment names or capabilities",availableAria:"Available environments and workspaces",loading:"Loading available environments…",noMatch:"No matching environments or workspaces",workspaces:"Workspaces",reuseAll:"Use every available environment in this workspace",availableEnvironmentCount_one:"{{count}} available environment",availableEnvironmentCount_other:"{{count}} available environments",selectWorkspace:"Select workspace {{name}}",environments:"Environments",includedByWorkspaces:"Included by workspace {{names}}",nameSeparator:", ",selectEnvironment:"Select environment {{name}}",selectedWorkspaceCount_one:"{{count}} workspace selected",selectedWorkspaceCount_other:"{{count}} workspaces selected",coveredEnvironmentCount_one:"{{count}} environment covered",coveredEnvironmentCount_other:"{{count}} environments covered",selectionSummary:"{{workspaces}}, {{environments}}",cancel:"Cancel",mounting:"Mounting…",confirm:"Add selected",mountedAria:"Mounted environments",environmentCount_one:"{{count}} environment",environmentCount_other:"{{count}} environments",removeWorkspace:"Remove workspace {{name}}",remove:"Remove",removeEnvironment:"Remove environment {{name}}",add:"Add environments",addMore:"Add more environments",addForSession:"Add environments to this session",loadingAvailable:"Loading available environments…",empty:"No AIO Sandbox environments are available."},kme={loading:{searching:"Looking for an existing environment",creating:"Initializing environment",connecting:"Connecting to the environment"},initializationFailed:"AgentKit CLI environment initialization failed. Current status: {{status}}.",sessionExpired:"The AgentKit CLI session does not exist or has expired. Try again.",initializationTimeout:"AgentKit CLI environment initialization timed out. Try again later.",nonPersistent:"Non-persistent environment",recyclingHoursMinutes:"Environment reclaimed in {{hours}} hr {{minutes}} min",recyclingMinutes:"Environment reclaimed in {{minutes}} min",connectionError:`Could not connect to the Studio service because the server did not respond.
+Original error: {{message}}`,unavailable:"Connection unavailable",requestFailed:"AgentKit CLI request failed",retry:"Retry",terminalTitle:"AgentKit CLI terminal"},Sme={labels:{coding:"Coding",get_city_weather:"City weather",get_location_weather:"Location weather",web_fetch:"Fetch web content",studio_write_artifact:"Save session artifact"},closeDialog:"Close dialog",title:"Add Studio tools",description:"Studio BFF runs these tools for {{agentName}} in the current session. No Runtime installation is required.",close:"Close Add Studio tools",searchAria:"Search Studio tools",searchPlaceholder:"Search by name or tool ID",availableAria:"Available Studio tools",loading:"Loading Studio tools…",noMatch:"No matching Studio tools",remove:"Remove",add:"Add"},Eme={artifactLibrary:hme,resourceMetadata:pme,artifactEdit:mme,codeBrowser:gme,search:bme,developerResources:yme,library:vme,manageAgents:xme,agentTopology:wme,sessionEnvironment:Ome,agentKitCli:kme,studioTools:Sme},qUe=Object.freeze(Object.defineProperty({__proto__:null,agentKitCli:kme,agentTopology:wme,artifactEdit:mme,artifactLibrary:hme,codeBrowser:gme,default:Eme,developerResources:yme,library:vme,manageAgents:xme,resourceMetadata:pme,search:bme,sessionEnvironment:Ome,studioTools:Sme},Symbol.toStringTag,{value:"Module"})),Cme={requestFailed:"请求失败 ({{status}})",unknownError:"未知错误",contentTypeMissing:"Content-Type 缺失",response:"响应:{{response}}",fallbackWithDetail:"{{fallback}}:{{detail}}",fallbackWithHttpStatus:"{{fallback}}(HTTP {{status}})",nonJsonResponse:"{{fallback}}:服务端返回非 JSON 响应({{contentType}})"},Tme={unconfigured:"管理员未配置 AgentKit Dev Sandbox,请配置后再使用",invalidSession:"AgentKit CLI 返回了无效的 Session。",loadCapabilitiesFailed:"无法读取 AgentKit CLI 配置。",invalidCapabilities:"AgentKit CLI 返回了无效的配置状态。",listSessionsFailed:"无法读取 AgentKit CLI Session。",invalidSessionList:"AgentKit CLI 返回了无效的 Session 列表。",createSessionFailed:"无法创建 AgentKit CLI Session。",openSessionFailed:"无法打开 AgentKit CLI Session。",openTerminalFailed:"无法打开 AgentKit CLI 终端。",invalidTerminalUrl:"AgentKit CLI 返回了无效的终端地址。"},Ame={cnBeijing:"华北 2(北京)",cnShanghai:"华东 2(上海)"},_me={runtimeUnsupported:"该 Runtime 暂不支持连接,请确认服务已正常运行。"},jme={autoConfigureFailed:"飞书机器人自动配置失败"},Nme={actionFailed:"{{action}}失败",detail:"详细信息:{{detail}}",request:"请求:{{request}}"},Rme={persistentMemoryHint:"提示:会话已不存在。使用 in-memory 或 SQLite 短期记忆时,多实例、进程重启或滚动发布都可能导致会话丢失;建议改用基于数据库的持久化短期记忆存储。",unsupportedRouteHint:"提示:该 Runtime 未提供会话能力运行接口,可能是 Runtime 版本与当前 Studio 不兼容。",toolArgumentHint:"提示:模型生成的工具参数格式不完整,请重新发送一次。",resourceCollectionExpiredHint:"提示:本次资源清单已失效,请重新发送任务;系统会重新收集资源后再创建 Agent。",networkConfigurationHint:"提示:请稍后重试,查看 Runtime、模型或网关日志。",modelQuotaHint:"提示:模型当前触发了 TPM/RPM 配额限制,请稍后重试或提高模型配额。",rawResponseLabel:"原始响应:"},Ime={httpStatus:"HTTP 状态码:{{status}}",errorCode:"错误码:{{code}}",cloudResponseBody:`云端响应正文:
+{{body}}`,loadFailedWithDetail:"读取实例日志失败:{{detail}}",invalidFormat:"读取实例日志失败:服务返回格式无效"},Pme={untitledSession:"未命名会话",webUnavailable:"网络搜索接口未就绪(后端未启用 /web/search)。",webFailed:"网络搜索失败:{{message}}",webNotMounted:"当前 Agent 未挂载 web_search 工具。",knowledgeNotMounted:"该 Agent 未挂载知识库。",memoryNotMounted:"该 Agent 未挂载长期记忆。",knowledge:"知识库",longTermMemory:"长期记忆"},Dme={listSpacesFailed:"读取 Skill 空间失败",createSpaceFailed:"创建 Skill 空间失败",updateSpaceFailed:"更新 Skill 空间失败",deleteSpaceFailed:"删除 Skill 空间失败",uploadFailed:"上传 Skill 失败",validateFailed:"校验 Skill 失败",deleteFailed:"删除 Skill 失败",listFilesFailed:"读取 Skill 文件失败",downloadFailed:"下载 Skill 失败",sharedSpaceFailed:"共享空间加载失败",reservedSpaceName:"此名称由系统空间保留,请使用其他名称",reviewSpaceFailed:"待审核空间暂不可用",submitReviewFailed:"申请公开失败",listReviewsFailed:"加载审核申请失败",reviewFilesFailed:"加载提交文件失败",decideReviewFailed:"审批失败,请重试",listVersionsFailed:"无法加载技能版本",uploadVersionFailed:"上传技能新版本失败"},Mme={truncatedData:"{{data}}…(已截断,共 {{count}} 个字符)",incompleteEvent:"SSE 流在事件完整返回前已结束。原始数据:{{data}}",invalidEventJson:"无法解析 SSE 事件中的 JSON。原始数据:{{data}}"},Lme={loadConfigNetworkFailed:"无法加载登录配置,请检查网络后重试。",configServiceFailed:"登录配置服务异常(HTTP {{status}}),请稍后重试。",invalidConfigResponse:"登录配置服务返回了无法解析的响应,请稍后重试。",serviceNetworkFailed:"无法连接身份服务,请检查网络后重试。",invalidServiceResponse:"身份服务返回了无法解析的响应,请稍后重试。",serviceFailed:"身份服务异常(HTTP {{status}}),请稍后重试。"},$me={invalidToken:"GitHub Token 无效或没有仓库写入权限",notFound:"仓库、分支或文件不存在,或 Token 无权访问",rejectedCommit:"GitHub 拒绝了提交,请检查分支和文件状态",requestFailed:"GitHub 请求失败(HTTP {{status}})",networkFailed:"连接 GitHub 失败,请检查网络后重试",invalidRepositoryFormat:"GitHub Repo 格式应为 owner/repository",insecureRepositoryUrl:"仅支持安全的 github.com 仓库地址",unsafeProjectPath:"Agent 项目目录必须是仓库内的安全相对路径",tokenRequired:"GitHub Token 不能为空",invalidBaseBranch:"目标分支格式不正确",invalidPublishBranch:"发布分支格式不正确",noFiles:"没有需要提交的文件",missingBaseSha:"目标分支缺少有效 Git SHA",fileAlreadyExists:"目标仓库中已存在 {{path}},未覆盖现有文件",pathNotUpdatable:"目标路径 {{path}} 不是可更新的文件",invalidPullRequest:"GitHub 未返回有效的 Pull Request"},Fme={loadCapabilitiesFailed:"加载视频模型能力失败",uploadAssetFailed:"上传{{fileName}}失败",enhancePromptFailed:"提示词优化失败",createTaskFailed:"创建视频生成任务失败",getTaskFailed:"查询视频生成任务失败",downloadFailed:"下载生成视频失败"},Bme={listFailed:"加载网站集成失败",createFailed:"创建网站集成失败",deleteFailed:"删除网站集成失败"},Ume={loadFailed:"读取知识库失败",htmlHidden:"[HTML 内容已隐藏]",redacted:"[已脱敏]",depthTruncated:"[内容过深,已截断]",circularReference:"[循环引用]",diagnosticsUnavailable:"[诊断信息无法显示]",statusCode:"状态码:{{status}}",errorCode:"错误码:{{code}}",requestId:"请求 ID:{{requestId}}",diagnostics:"诊断:{{diagnostics}}",detail:"详情:{{detail}}",signInRequired:"请先登录后再访问知识库",forbidden:"你没有权限操作这个知识库",notFound:"知识库或知识内容不存在",conflict:"知识库当前状态不允许执行此操作",requestFailed:"知识库请求失败 ({{status}})"},Qme={invalidName:"名称须为 1~128 个字符,不能包含控制字符、不可见格式字符或 < >。",renameProjectFailed:"修改项目名称失败",renameVersionFailed:"修改版本名称失败",invalidNameUpdateResponse:"名称更新响应与请求不一致,请刷新后重试。",invalidSourceSnapshot:"源码快照的响应格式无效。",invalidProjectList:"项目列表的响应格式无效。",invalidProjectVersion:"项目版本的响应格式无效。",loadProjectsFailed:"无法读取已保存项目",loadVersionsFailed:"无法读取项目版本",deleteVersionFailed:"删除项目版本失败",invalidDeleteVersionResponse:"删除项目版本的响应格式无效。",loadProjectSourceFailed:"无法读取项目源码",loadSnapshotFailed:"无法读取源码快照",restoreSnapshotFailed:"无法恢复当前源码快照",downloadSourceFailed:"下载源码失败",downloadNotZip:"源码下载响应不是 ZIP 文件。",downloadSizeMismatch:"源码压缩包大小与发布记录不一致,请重试。"},zme={invalidFormat:"{{label}}格式错误。",validationSeparator:";",invalidAnalysisResult:"迁移分析结果格式错误。",invalidFrameworkCandidate:"框架候选格式错误。",invalidAnalysisEvidence:"分析证据格式错误。",invalidEntryCandidate:"入口候选格式错误。",invalidQuestion:"待确认问题格式错误。",invalidTask:"迁移会话格式错误。",invalidAnalysisReference:"分析结果引用格式错误。",invalidSourcePersistence:"迁移源码保存状态格式错误。",invalidActivity:"迁移执行动态格式错误。",invalidActivityItem:"迁移执行动态项格式错误。",invalidActivityTool:"迁移执行工具项格式错误。",invalidActivityPlan:"迁移执行计划格式错误。",invalidActivityPlanItem:"迁移执行计划项格式错误。",invalidArtifact:"迁移产物格式错误。",invalidEnvironmentDefaults:"环境变量默认值格式错误。",invalidArtifactFile:"迁移产物文件格式错误。",invalidVerificationCheck:"迁移校验项格式错误。",requestValidationFailed:"请求参数校验失败:{{detail}}",gatewayError:"{{fallback}}(HTTP {{status}},Content-Type: {{contentType}})。请检查代理或网关配置。",nonJsonResponse:"{{fallback}}:服务端返回非 JSON 响应(HTTP {{status}})。请检查代理或网关配置。",loadCapabilitiesFailed:"读取迁移能力失败",invalidCapabilities:"迁移能力格式错误。",invalidModelCapabilities:"迁移模型能力格式错误。",loadTasksFailed:"读取迁移会话失败",invalidTaskList:"迁移会话列表格式错误。",createTaskFailed:"创建迁移会话失败",uploadProjectFailed:"上传迁移项目失败",loadActivityFailed:"读取迁移执行动态失败",startFailed:"启动迁移失败",submitAnswersFailed:"提交分析补充信息失败",stopFailed:"终止迁移失败",deleteTaskFailed:"删除迁移会话失败",loadArtifactFailed:"读取迁移产物失败",loadArtifactFileFailed:"读取迁移产物文件失败",downloadArtifactFailed:"下载迁移产物失败",evaluation:{datasetSaveFailed:"保存评测用例失败",datasetLoadFailed:"读取评测用例失败",statusLoadFailed:"读取评测状态失败",resumeFailed:"继续评测失败",retryFailed:"重新评测失败",reportLoadFailed:"读取评测报告失败",reportDownloadFailed:"下载评测报告失败"},labels:{analysisResult:"迁移分析结果",recommendation:"迁移建议",boundary:"迁移边界",frameworkCandidate:"框架候选",analysisEvidence:"分析证据",recommendedFramework:"推荐框架",entryCandidate:"入口候选",entryFramework:"入口框架",includeScope:"迁移包含范围",excludeScope:"迁移排除范围",assumptions:"分析假设",question:"待确认问题",analysisWarnings:"迁移警告",task:"迁移会话",artifactStatus:"迁移产物状态",analysisReference:"分析结果引用",confirmation:"迁移确认",confirmedFramework:"确认框架",error:"迁移错误",sourcePersistence:"迁移源码保存状态",activity:"迁移执行动态",activityItem:"迁移执行动态项",activityTool:"迁移执行工具项",activityPlanItem:"迁移执行计划项",artifact:"迁移产物",cli:"CLI 信息",migration:"迁移信息",startup:"启动信息",environment:"环境变量信息",verification:"校验信息",report:"迁移报告",archive:"产物归档",environmentDefaults:"环境变量默认值",requiredEnvironment:"必需环境变量",optionalEnvironment:"可选环境变量",artifactFile:"迁移产物文件",verificationCheck:"迁移校验项",artifactWarnings:"迁移产物警告",errorResponse:"错误响应",errorDetail:"错误详情",capabilities:"迁移能力",framework:"迁移框架",modelCapabilities:"迁移模型能力",taskList:"迁移会话列表",evaluationAsset:"评测资产",evaluation:"评测状态",evaluationCapabilities:"评测能力",evaluationDimension:"评测维度",evaluationCase:"评测用例",evaluationCriteria:"评测标准",evaluationMessage:"评测对话",evaluationDataset:"评测数据集",evaluationDimensionResult:"评测维度结果",evaluationEvidence:"评测证据",evaluationReport:"评测报告",evaluationSummary:"评测汇总",evaluationCaseResult:"评测用例结果",evaluationOutput:"评测输出",evaluationLimitations:"评测限制"}},Vme={status:{ready:"就绪",wakeable:"已休眠",creating:"创建中",starting:"启动中",pending:"等待中",running:"运行中",failed:"异常",stopped:"已停止",expired:"已过期",deleting:"删除中",deleted:"已删除",unknown:"未知状态"},developmentTimeout:"等待开发环境响应超时。任务可能仍在运行,请稍后重新进入当前会话查看状态。",developmentDisconnected:"与开发环境的连接已中断。任务可能仍在运行,请稍后重新进入当前会话查看状态。",developmentFailed:"开发任务未能继续,开发环境已保留。请在当前会话重试。",invalidStudioResponse:"{{fallback}} Studio 服务响应异常,请刷新后重试。",invalidSession:"AgentKit 沙箱返回了无效的 Session 信息。",invalidSnapshot:"AgentKit 沙箱返回了无效的 Snapshot 信息。",invalidSettings:"Sandbox 返回了无效设置。",invalidThreadSnapshot:"Sandbox 返回了无效 Thread 快照。",emptyConversationResponse:"沙箱对话服务未返回内容。",invalidConversationResponse:"沙箱对话服务返回了无法解析的响应。",conversationFailed:"沙箱对话失败,请稍后重试。",emptyReply:"沙箱未返回有效回复,请重试。",missingSession:"缺少要操作的 AgentKit Session。",listCodexFailed:"无法读取 Codex 智能体,请稍后重试。",invalidSessionList:"AgentKit 沙箱返回了无效的 Session 列表。",invalidSnapshotList:"AgentKit 沙箱返回了无效的 Snapshot 列表。",startFailed:"无法启动 AgentKit 沙箱,请稍后重试。",listAgentFailed:"无法读取 {{kind}} 智能体,请稍后重试。",invalidKindSessionList:"AgentKit 返回了无效的 {{kind}} Session 列表。",invalidKindSnapshotList:"AgentKit 返回了无效的 {{kind}} Snapshot 列表。",createAgentFailed:"无法创建 {{kind}} 智能体,请稍后重试。",missingSessionToOpen:"缺少要打开的 AgentKit Session。",openAgentFailed:"无法打开 {{kind}} 智能体。",invalidAgentHomeUrl:"{{kind}} 智能体返回了无效的主页面地址。",missingSessionForTerminal:"缺少要打开 Terminal 的 AgentKit Session。",openTerminalFailed:"无法打开 {{kind}} Terminal。",deleteAgentFailed:"无法删除 {{kind}} 智能体。",missingSnapshot:"未找到要唤醒的智能体。",resumeSnapshotFailed:"无法唤醒智能体,请稍后重试。",deleteSnapshotFailed:"无法删除智能体,请稍后重试。",missingSessionToConnect:"缺少要连接的 AgentKit Session。",connectCodexFailed:"无法连接 Codex 智能体,请稍后重试。",sessionNotReady:"AgentKit Session 尚未就绪,当前状态:{{status}}。",invalidMessage:"内置智能体会话缺少有效的消息内容。",interruptFailed:"无法停止当前任务。",getStatusFailed:"无法读取 Codex 状态。",getEndpointFailed:"无法读取 Sandbox Endpoint。",invalidEndpoint:"Sandbox 返回了无效 Endpoint。",createHandoffPairingFailed:"无法生成 Codex 云端接力配对码。",invalidHandoffPairing:"Studio 返回了无效的 Codex 云端接力配对码。",getHandoffStatusFailed:"无法读取端云接力状态。",invalidHandoffStatus:"Studio 返回了无效的端云接力状态。",listModelsFailed:"无法读取 Codex 模型列表。",invalidModelList:"Sandbox 返回了无效模型列表。",setModelFailed:"无法切换 Codex 模型。",invalidModel:"Sandbox 返回了无效模型。",listSkillsFailed:"无法读取 Codex Skills。",invalidSkillList:"Sandbox 返回了无效 Skill 列表。",listThreadsFailed:"无法读取 Codex Thread 列表。",invalidThreadList:"Sandbox 返回了无效 Thread 列表。",createThreadFailed:"无法创建新的 Codex Thread。",missingThread:"缺少要读取的 Codex Thread。",readThreadFailed:"无法读取 Codex 历史消息。",resumeThreadFailed:"无法恢复 Codex Thread。",forkThreadFailed:"无法分叉 Codex Thread。",archiveThreadFailed:"无法归档 Codex Thread。",invalidArchiveResult:"Sandbox 返回了无效归档结果。",deleteThreadFailed:"无法删除 Codex Thread。",invalidDeleteResult:"Sandbox 返回了无效删除结果。",compactThreadFailed:"无法压缩 Codex Thread。",getSettingsFailed:"无法读取 Codex 权限与工作空间。",updatePermissionsFailed:"无法更新 Codex 权限。",updateWorkspaceFailed:"无法更新 Codex 工作空间。",invalidWorkingDirectory:"Sandbox 返回了无效工作目录。",listDirectoriesFailed:"无法读取 Sandbox 目录。",invalidDirectoryList:"Sandbox 返回了无效目录列表。",resolveApprovalFailed:"无法提交 Codex 审批决定。",uploadFileFailed:"无法上传文件到 Sandbox。",invalidUploadResult:"Sandbox 返回了无效上传结果。",disconnectCodexFailed:"无法断开 Codex 智能体连接。",deleteCodexFailed:"无法删除 Codex 智能体。",openSandboxTerminalFailed:"无法打开 Sandbox Terminal。",openSandboxBrowserFailed:"无法打开 Sandbox Browser。",toolLabel:"Sandbox 工具",invalidToolUrl:"{{label}} 返回了无效地址。",unsafeToolUrl:"{{label}} 返回了不安全的地址。"},Hme={invalidSandboxVersion:"沙箱版本响应格式无效",loadSandboxVersionsFailed:"查询沙箱版本失败",updateSandboxFailed:"更新 Sandbox 失败",invalidSandboxUpdate:"沙箱更新响应格式无效",errorWithDetailAndRawResponse:`{{context}}
{{detail}}
响应详情:
{{response}}`,errorWithRawResponse:`{{context}}
@@ -38,20 +38,20 @@ Original error: {{message}}`,unavailable:"Connection unavailable",requestFailed:
{{response}}`,loadArkApiKeysFailed:"加载 Ark API Key 失败",loadModelsFailed:"加载模型列表失败",runtimeAccessDenied:"当前账号无权访问该 Runtime,请刷新列表或重新登录后重试。",privateRuntimeUnavailable:"Runtime 已部署成功,但当前 Studio 无法访问私网 Runtime。请使用已绑定相同 VPC 的 Studio 访问,或改用公网 / 公网+VPC 部署。",runtimeTemporarilyUnavailable:"Runtime 已部署成功,但 Studio 暂时无法连接服务。网关域名可能仍在生效,或当前网络/DNS 无法访问该 Runtime,请稍后在智能体管理页重试连接。",runtimeConnectionUnsupported:"该 Runtime 的 Agent Server 未提供连接接口,请确认 Runtime 已就绪且版本兼容。",runtimeConnectionDenied:"Runtime 服务拒绝了连接请求,请检查 Runtime 的鉴权配置。",listAgentsFailed:"读取 Agent 列表失败",invalidListAppsJson:"Runtime /list-apps 返回了无法解析的 JSON 响应。",invalidListAppsFormat:"Runtime /list-apps 返回格式无效,应为非空字符串数组。",createSessionFailedWithStatus:"创建会话失败 ({{status}})",createSessionFailed:"创建会话失败",getSessionFailed:"读取会话失败",getSessionFailedWithDetail:"读取会话失败:{{status}}:{{detail}}",feedbackRuntimeOnly:"只有连接到 AgentKit Runtime 的会话支持反馈回流",feedbackRegionMissing:"Runtime 缺少地域信息,无法提交反馈",submitFeedbackFailed:"提交反馈失败",loadEvaluationSetsFailed:"读取评测集失败",loadAutoEvaluationStatusFailed:"读取自动评测状态失败",loadOptimizationsFailed:"读取优化项失败",deleteEvaluationCaseFailed:"删除评测案例失败",downloadFileFailed:"下载文件失败",fileUnavailable:"文件内容不可用",uploadFileFailed:"文件上传失败",traceDisabled:"该 Agent 暂未开启链路观测,请到控制台打开后使用。",loadTraceFailed:"加载调用链路失败",contentTypeMissing:"Content-Type 缺失",traceNonJson:"加载调用链路失败:服务端返回了非 JSON 响应({{contentType}}),请检查 Studio API 代理配置",invalidTraceFormat:"加载调用链路失败:返回格式无效",submitIssueFeedbackFailed:"问题反馈上报失败",issueFeedbackNotConfirmed:"问题反馈上报失败:服务端未确认提交结果",noPreviewableAgent:"该 Runtime 未提供可预览的 Agent。",agentSearchFailed:"Agent 检索失败",emptySseBody:"HTTP 200,SSE 响应体为空。",noDisplayableSseReply:"HTTP 200,SSE 响应中没有可展示的模型回复。",firstSseEventTimeout:"60 秒内未收到首个 SSE 事件。请稍后重试,或查看 Runtime、模型、网关日志定位原因。",runSessionFailed:"运行会话失败",runSseFailedWithDetail:"运行会话失败:{{status}}:{{detail}}",checkRuntimeNameFailed:"检查 Runtime 名称失败",invalidRuntimeNameCheck:"检查 Runtime 名称失败:服务返回格式错误",loadCloudResourcesFailed:"加载云资源失败",invalidCloudResources:"云资源列表响应格式无效",invalidEnvironmentMount:"挂载环境响应格式无效",environmentMountMismatch:"挂载环境响应与请求不一致",environmentMountNetworkFailed:"无法连接 Studio 服务,环境挂载未完成。请检查网络后重试。",environmentMountFailed:"挂载环境失败",clipboardUnsupported:"当前浏览器不支持写入剪贴板。",clipboardWriteFailed:"无法写入剪贴板,请检查剪贴板权限。",loadSystemInfoFailed:"加载系统信息失败",invalidSystemInfo:"系统信息响应格式无效",invalidEnvironmentBuild:"环境构建响应格式无效",invalidEnvironmentBuildStep:"环境构建步骤响应格式无效",invalidEnvironmentManifest:"环境 Manifest 响应格式无效",invalidImageRepository:"环境镜像仓库响应格式无效",invalidCodeRepository:"环境代码仓库响应格式无效",invalidImageSource:"环境镜像来源响应格式无效",invalidEnvironment:"环境响应格式无效",invalidWorkspace:"工作区响应格式无效",loadWorkspacesFailed:"加载工作区失败",invalidWorkspaceList:"工作区列表响应格式无效",saveWorkspaceFailed:"保存工作区失败",deleteWorkspaceFailed:"删除工作区失败",loadEnvironmentsFailed:"加载环境失败",invalidEnvironmentList:"环境列表响应格式无效",probeRepositoryFailed:"探查代码仓库失败",invalidRepositoryProbe:"代码仓库探查响应格式无效",exportEnvironmentCodeFailed:"导出环境分享码失败",invalidEnvironmentCode:"环境分享码响应格式无效",inspectEnvironmentCodeFailed:"检测环境分享码失败",invalidEnvironmentCodeInspection:"环境分享码检测响应格式无效",importEnvironmentCodeFailed:"导入环境分享码失败",invalidEnvironmentCodeImport:"环境分享码导入响应格式无效",studioUnavailable:"无法连接 Studio 服务,请确认后端已启动后重试。",saveEnvironmentFailed:"保存环境失败",deleteEnvironmentFailed:"删除环境失败",startEnvironmentBuildFailed:"启动环境构建失败",loadEnvironmentBuildFailed:"读取环境构建详情失败",loadEnvironmentManifestFailed:"读取环境 Manifest 失败",invalidEnvironmentResource:"环境资源响应格式无效",loadEnvironmentResourcesFailed:"加载环境构建资源失败",updateCodexSandboxFailed:"更新 Codex Sandbox 失败",invalidCodexSandboxUpdate:"Codex Sandbox 更新响应格式无效",loadUserPoolsFailed:"加载用户池失败",invalidUserPoolList:"用户池列表响应格式无效",syncGithubFailed:"同步 GitHub 代码失败 ({{status}})",validatingMigrationArtifact:"正在校验迁移产物",uploadingCodePackage:"正在上传代码包",migrationArtifactValidated:"迁移产物校验完成",codePackageUploaded:"代码包上传完成",deploymentProgress:{preparing:"正在准备部署",uploading:"正在上传代码包",building:"正在构建镜像",buildLogsSyncing:"正在构建镜像,构建日志已同步。",buildLogsComplete:"构建日志同步完成。",buildFailedLogsSynced:"镜像构建失败,最终构建日志已同步。",buildLogsUnavailable:"暂时无法读取构建日志。",finalBuildLogsUnavailable:"暂时无法读取最终构建日志。",deploying:"正在部署服务",publishing:"正在发布服务",evaluating:"正在创建评测集",updating:"正在更新 Runtime 配置",completing:"正在完成部署",github:"正在配置 GitHub 持续交付",inProgress:"正在部署"},deploymentFailed:"部署失败",deploymentDisconnected:"部署失败:连接中断",deploymentMissingAgentName:"部署失败:返回缺少 Agent 名称",deploymentMissingConnection:"部署失败:返回缺少 AgentKit 连接信息",cancelDeploymentFailed:"取消部署失败 ({{status}})",loadFailed:"加载失败 ({{status}})",loadPermissionsFailed:"加载权限失败 ({{status}})",invalidPermissionResponse:"权限服务返回了无法解析的响应",checkStudioUpdateFailed:"检查 Studio 更新失败 ({{status}})",studioUpdatePreflightFailed:"Studio 更新权限预检失败 ({{status}})",submitStudioUpdateFailed:"提交 Studio 更新失败 ({{status}})",loadAgentUsageFailed:"加载 Agent 用量失败",notProvided:"未提供",agentUsageNonJson:"加载 Agent 用量失败:服务端返回非 JSON 响应(HTTP {{status}},Content-Type: {{contentType}})。",checkStudioGateway:"请确认当前服务以 Studio 模式启动,并检查代理或网关配置。",agentUsageInvalidJson:"加载 Agent 用量失败:服务端返回了无法解析的 JSON(HTTP {{status}},Content-Type: {{contentType}})。",retryCheckGateway:"请稍后重试;若问题持续,请检查代理或网关配置。",loadCronJobsFailed:"加载定时任务失败",loadCronJobFailed:"加载定时任务详情失败",createCronJobFailed:"创建定时任务失败",updateCronJobFailed:"更新定时任务失败",enableCronJobFailed:"启用定时任务失败",pauseCronJobFailed:"暂停定时任务失败",runCronJobFailed:"立即执行定时任务失败",loadCronHistoryFailed:"加载执行历史失败",stopCronRunFailed:"终止执行失败",deleteCronJobFailed:"删除定时任务失败",loadRuntimeFailed:"加载 Runtime 失败",loadLocalToolsFailed:"读取本地工具失败",connectDynamicRouteFailed:"连接 Studio 动态路由失败",a2aProbeDenied:"Runtime 服务拒绝了 A2A 探测请求,请检查 Runtime 的鉴权配置。",loadA2aCardFailed:"读取 A2A Agent Card 失败",loadRuntimeApiKeyFailed:"读取 Runtime API Key 失败",runtimeApiKeyMissing:"Runtime 未返回可用的 API Key",loadMcpCredentialsFailed:"读取 MCP 认证信息失败",invalidMcpCredentials:"Studio 返回的 MCP 认证信息格式无效",deleteFailed:"删除失败 ({{status}})",runtimeManageForbidden:"当前账号没有管理该 Runtime 的权限。",runtimeNotFound:"该 Runtime 不存在或已被删除。",runtimeUnavailable:"当前账号无法访问该 Runtime。",checkRuntimeUpdateFailed:"检查 Runtime 更新能力失败(HTTP {{status}}),请稍后重试。",loadRuntimeDetailFailed:"加载 Runtime 详情失败",generateProjectFailed:"生成项目失败",generateAgentConfigFailed:"生成 Agent 配置失败",createDebugRunFailed:"创建调试运行失败",createDebugSessionFailed:"创建调试会话失败",loadDebugTraceFailed:"加载调试调用链路失败",invalidDebugTrace:"加载调试调用链路失败:返回格式无效",debugRunFailed:"调试运行失败",cleanupDebugRunFailed:"清理调试运行失败",errorWithCloudResponse:`{{context}}
云接口:{{action}}
云服务原始响应:
-{{response}}`,emptyCloudResponse:"(响应正文为空)"},Wme={loadFailed:"读取会话模式能力失败(HTTP {{status}})",invalidResponse:"会话模式能力响应格式错误"},Kme={nonJson:"{{fallback}}:服务端返回非 JSON 响应(HTTP {{status}},{{contentType}}){{detail}}"},Gme={busy:"工作区正在处理较多请求,请稍后重试",notFound:"工作区不存在",duplicates:"检测到多个个人工作区会话,请联系管理员处理",timeout:"工作区恢复超时,项目仍保留,请重试",unavailable:"工作区暂时无法恢复,原项目仍保留,请重试",persistence:"当前 Sandbox 未启用持久化快照,请检查工作区配置",startup:"个人工作区启动失败,请检查 Sandbox 状态",exists:"项目名称已存在,请从项目列表打开",directory:"项目目录不存在",configuration:"请先配置工作区 Sandbox 镜像",state:"暂时无法确认工作区状态,请重试",list:"恢复工作区或读取项目列表失败,请重试",create:"项目初始化失败,请确认镜像可用后重试",open:"恢复工作区或打开项目失败,请重试",connection:"工作区暂时无法连接,请重试",invalidWorkspaceUrl:"工作区返回了无效的访问地址",operation:"项目操作失败,请重试",invalidProjectUrl:"项目访问地址无效",listFallback:"读取项目列表失败",connectionState:"暂时无法连接工作区,请重试"},Xme={reporting:"正在补齐交付信息",packaging:"正在整理产物",savingVersion:"正在保存版本",finishing:"正在完成请求",submitResult:"提交构建结果",requestFailed:"任务请求失败,请重试。",invalidResponse:"任务状态响应无效。",eventGap:"正在补齐任务输出。",reconnecting:"连接暂时中断,正在重连。已有输出已保留。",input:{pending:"等待送达",sending:"正在确认送达",delivered:"已送达",withdrawn:"已停止发送"},plan:"执行计划",diff:"文件变更",preparing:"正在准备任务",preparingEnvironment:"正在准备开发环境…",connectingEnvironment:"正在连接开发环境…",processing:"正在处理请求",thinking:"正在思考",read:"读取文件 · {{target}}",listFiles:"查看目录 · {{target}}",search:"搜索 · {{target}}",command:"执行命令 · {{target}}",editFiles:"修改文件 · {{target}}",webSearch:"搜索网页 · {{target}}",processSummary:"已处理 {{count}} 项",duration:"{{seconds}} 秒",durationUnits:{milliseconds:"{{value}} 毫秒",hours:"{{value}} 小时",minutes:"{{value}} 分",seconds:"{{value}} 秒"},failedTools:"{{count}} 项执行失败",toolFailed:"执行失败",toolCalls:"{{count}} 次工具调用",turnDuration:"本轮耗时 {{duration}}",toolDuration:"工具累计耗时 {{duration}}",toolDurationPartial:"已记录工具耗时 {{duration}}",toolDurationHelp:"各工具执行耗时之和;并行调用可能使累计耗时超过本轮耗时。",turnStatus:{completed:"已完成",failed:"未完成",interrupted:"已中断",cancelled:"已中断",unavailable:"任务已结束"},notReported:"未上报",partial:"已记录",partialHelp:"本轮记录可能不完整。",tokenDetails:"本轮 Token 用量",model:"本轮模型",totalTokens:"总量",inputTokens:"输入",cachedInputTokens:"缓存命中输入",uncachedInputTokens:"未命中输入",cacheWriteInputTokens:"缓存写入",outputTokens:"输出",reasoningOutputTokens:"推理输出",cacheHitRate:"输入缓存命中率",tokenHelp:"缓存命中属于输入,推理输出属于输出,不重复计入总量。未命中输入 = 输入 − 缓存命中。"},D9={common:Tme,agentkitCli:Ame,cloudRegion:_me,connections:jme,feishuBot:Nme,requestError:Rme,runSse:Ime,runtimeLogs:Pme,search:Dme,skills:Mme,sse:Lme,identity:$me,github:Fme,video:Bme,websiteIntegration:Ume,knowledge:Qme,intelligentDevelopment:zme,migrations:Vme,sandbox:Hme,client:qme,newChatCapabilities:Wme,jsonResponse:Kme,workspaceProjects:Gme,developmentRuns:Xme},KUe=Object.freeze(Object.defineProperty({__proto__:null,agentkitCli:Ame,client:qme,cloudRegion:_me,common:Tme,connections:jme,default:D9,developmentRuns:Xme,feishuBot:Nme,github:Fme,identity:$me,intelligentDevelopment:zme,jsonResponse:Kme,knowledge:Qme,migrations:Vme,newChatCapabilities:Wme,requestError:Rme,runSse:Ime,runtimeLogs:Pme,sandbox:Hme,search:Dme,skills:Mme,sse:Lme,video:Bme,websiteIntegration:Ume,workspaceProjects:Gme},Symbol.toStringTag,{value:"Module"})),Yme="智能体审核",Zme="申请企业内全员使用,审批后生效",Jme="关闭",ege="刷新",tge="状态",nge="申请人",ige="申请时间",rge="当前版本",sge="模型",oge="退回人",age="通过人",lge="审批时间",cge="智能体描述",uge="申请说明",dge="退回理由",fge="审批意见",hge="退回理由(必填)",pge="提交后内容已变化,请退回并重新申请",mge="撤回后可以修改 Agent,需要公开时重新申请",gge="取消公开后其他用户将无法继续使用,确定取消公开吗?",bge="取消",yge="确认",vge="正在保存",xge="取消公开",wge="撤回申请",Oge="通过",kge="直接公开",Sge="申请公开",Ege="全员可见",Cge={pending:"待审核",approved:"已通过",returned:"已退回",withdrawn:"已撤回"},Tge="搜索智能体或申请人",Age="地域",_ge="全部状态",jge="智能体",Nge="操作",Rge="查看并审批",Ige="申请详情",Pge="没有符合条件的申请",Dge="暂无智能体审核申请",Mge="{{count}} / {{limit}} 字",GUe={title:Yme,dialogDescription:Zme,close:Jme,refresh:ege,statusTitle:tge,submitter:nge,submittedAt:ige,version:rge,model:sge,returnedBy:oge,approvedBy:age,reviewedAt:lge,description:cge,message:uge,reason:dge,comment:fge,reasonRequired:hge,contentChanged:pge,withdrawConfirm:mge,unpublishConfirm:gge,cancel:bge,confirm:yge,saving:vge,unpublish:xge,withdraw:wge,return:"退回",approve:Oge,publish:kge,submit:Sge,private:"仅自己可见",enterprise:Ege,status:Cge,search:Tge,region:Age,all:_ge,agent:jge,actions:Nge,review:Rge,details:Ige,noMatches:Pge,empty:Dge,textCount:Mge},XUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Nge,agent:jge,all:_ge,approve:Oge,approvedBy:age,cancel:bge,close:Jme,comment:fge,confirm:yge,contentChanged:pge,default:GUe,description:cge,details:Ige,dialogDescription:Zme,empty:Dge,enterprise:Ege,message:uge,model:sge,noMatches:Pge,publish:kge,reason:dge,reasonRequired:hge,refresh:ege,region:Age,returnedBy:oge,review:Rge,reviewedAt:lge,saving:vge,search:Tge,status:Cge,statusTitle:tge,submit:Sge,submittedAt:ige,submitter:nge,textCount:Mge,title:Yme,unpublish:xge,unpublishConfirm:gge,version:rge,withdraw:wge,withdrawConfirm:mge},Symbol.toStringTag,{value:"Module"})),Lge={backToEvaluationCase:"返回评测案例",cancel:"取消",copied:"已复制",copy:"复制",exportConversation:"导出会话",retry:"重试"},$ge={title:"您想以哪种方式添加 Agent 来运行?",subtitle:"选择最适合你的方式,下一步即可开始",quickCreate:{title:"从 0 快速创建",description:"用智能、自定义、模板或工作流的方式从零创建一个 Agent。"},intelligent:{title:"智能模式",description:"描述目标,按你的意图构建、调试并验证 Agent。"},package:{title:"从代码包添加和部署",description:"上传 Agent 项目压缩包,查看代码并直接部署到 AgentKit Runtime。"},migrate:{title:"从存量迁移",description:"从您的 LangChain、Dify 等存量项目迁移至 AgentKit Runtime。"}},Fge={subject:{file:"文件修改",command:"命令执行"},decision:{accept:"已允许本次{{subject}}",acceptForSession:"已在本会话中允许{{subject}}",decline:"已拒绝{{subject}}",cancel:"已取消{{subject}}审批"},details:{command:"命令",grantRoot:"授权路径",cwd:"执行目录"}},Bge={noDescription:"暂无描述",region:"地域",unknownAgent:"未知 Agent"},Uge={agentTransfer:"智能体移交",annotationHint:"模型回复;选中文字后可添加批注",continueBranch:"继续“{{branch}}”这个方向",emptyResponse:"本次没有返回可显示的内容。",subagentDescription:"正在执行主 Agent 移交的任务。"},Qge={title:"需要配置 {{provider}} AK/SK",prefix:"智能体工作台需要 {{provider}} 凭据才能使用。请在运行环境中设置",and:"与",suffix:"后重试。"},zge={buildRunning:{title:"当前构建仍在进行",description:"离开将停止本轮构建;当前会话仍会保留,可稍后从历史会话重新进入。",confirm:"停止并离开"},deleteThread:{title:"删除 Codex 历史会话",description:"将删除“{{name}}”,并从历史会话中移除。",confirm:"确认删除"},returnToCreate:{title:"返回创建首页?",description:"返回后当前填写的内容将会丢失,确定要返回吗?",confirm:"确定返回"}},Vge={additionalAgentDeleteFailures:";另有 {{count}} 个失败",agentDeleteFailures:"{{count}} 个 Agent 删除失败:{{failures}}{{suffix}}",agentToolsMissing:"当前 Agent 缺少任务工具:{{tools}}",buildStopUnconfirmed:"已离开开发环境,但未能确认本轮构建已停止。任务可能仍在运行,请稍后从历史会话检查状态。",builtinAgentSendFailed:"内置智能体发送失败:{{message}}",bytePlusEvaluationUnsupported:"BytePlus 暂不支持 AgentKit 评测集",clipboardUnsupported:"当前浏览器不支持写入剪贴板。",cloudCodexEmptyReply:"云端 Codex 已结束,但没有生成回复,请重新发送任务。",cloudCodexSessionMissing:"云端 Codex Session 暂未出现在列表中,请稍后重试。",deploymentRuntimeIdMissing:"部署完成,但未返回 Runtime ID。",environmentExpired:"所选环境已失效,请刷新后重新选择。",environmentsLoadFailed:"读取环境失败",evaluationCaseSessionMissing:"这条案例缺少会话定位信息,无法跳转。",evaluationUnsupportedForReply:"当前回复暂不支持加入评测集",firstFrameRequired:"首尾帧生成需要先添加首帧图片。",incompletePromptOptimization:"提示词优化结果不完整,请重新优化后再试。",intelligentCapabilityCheckFailed:"智能开发能力检查失败(HTTP {{status}})",intelligentSessionCreateFailed:"智能开发会话创建失败",invalidIntelligentCapability:"智能开发模型能力格式错误。",localBffToolsNotConfigured:"本地 Studio BFF 没有配置工具。",localToolsLoadFailed:"读取本地工具失败",loginPopupBlocked:"登录窗口被浏览器拦截,请允许弹出窗口后重试。",loginPopupClosed:"登录窗口已关闭,请重新登录以继续当前操作。",mediaTooLarge:"{{fileName}} 超出当前平台允许的素材大小。",mountEnvironmentFailed:"挂载环境失败",noConnectedSandbox:"当前没有已连接的 Sandbox。",noCreateAgentPermission:"当前账号没有添加 Agent 的权限。",noManageAgentPermission:"当前账号没有管理 Agent 的权限。",noOptimizationBaseline:"当前版本没有可对比的优化前版本。",oauthUrlMissing:"事件中没有授权地址。",onlyCloudAgentUpdatable:"仅支持更新已部署的云端智能体。",optimizationVersionMissing:"无法找到本次优化对应的项目版本,可能已被删除。",persistentStorageNotConfigured:"管理员未配置持久化存储",readDraftFailed:"无法读取本机草稿,请稍后重试。",runtimeAgentNameMissing:"Runtime 缺少智能体名称,无法更新。",runtimeBffToolsDisabled:"当前 Runtime Agent 未开启 BFF 工具能力。",runtimeDeploymentConfigUnavailable:"该 Runtime 的原发布配置不可恢复,无法安全更新。",runtimeMissingForConnection:"缺少 Runtime 信息,无法连接智能体。",runtimeRegionMissingForDelete:"Runtime 缺少地域信息,无法删除",runtimeRegionMissingForUpdate:"Runtime 缺少地域信息,无法更新。",runtimeUpdateUnsupported:"当前 Runtime 不支持原地更新。",sandboxRuntimeUnavailable:"当前 Agent 没有可用的 Sandbox Runtime。",sandboxToolsUnavailable:"当前 Studio BFF 未提供 Sandbox 执行工具。",saveDraftLocationRejected:"浏览器拒绝保存当前草稿位置,请检查站点存储权限后重试。",saveDraftRejected:"浏览器拒绝保存草稿,请稍后重试。",selectSkillToOptimize:"请先选择需要优化的 Skill。",sessionMissingForMount:"当前会话不存在,无法挂载环境。",sessionNotReady:"会话尚未就绪。",sessionUnavailable:"当前会话不可用,请关闭后重试。",sourceNotReady:"该源码尚未准备好,请返回对话继续处理。",textVideoRejectsReferences:"文生视频不使用参考素材,请先移除已添加的图片或视频。",videoEditRequiresVideo:"视频编辑需要先添加待编辑视频。",videoExtendRequiresVideo:"视频续写需要先添加基础视频。",videoGenerationFailed:"视频生成失败,请稍后重试。",videoModeUnsupported:"当前平台暂不支持所选视频任务模式。",videoPreviewMissing:"视频任务已完成,但服务端未返回预览地址。",videoReferenceRequired:"参考素材生视频需要至少添加一项参考图片或参考视频。"},Hge={like:"赞",removeLike:"取消点赞",dislike:"踩",removeDislike:"取消点踩",reportIssue:"问题反馈",traceFlameGraph:"Tracing 火焰图"},qge={0:"今天想做点什么?",1:"有什么可以帮你的?",2:"需要我帮你查点什么吗?",3:"有问题尽管问我",4:"嗨,我们开始吧",5:"开始一段新对话吧",6:"今天想先解决哪件事?",7:"把你的想法告诉我吧",8:"我们从哪里开始?",9:"有什么任务交给我?",10:"准备好一起推进了吗?",11:"说说你现在最关心的问题",12:"今天也一起把事情做好",13:"我在,随时可以开始",intelligentDevelopment:"让灵感自由生长"},Wge={agentCapabilities:"正在检查 Agent 能力…",session:"加载会话…"},Kge={cancelled:"授权已取消。",pasteCallbackUrl:"授权完成后,请粘贴回调页面(浏览器地址栏)的完整 URL:",popupBlocked:"弹窗被拦截,请允许弹窗后重试。",unsupportedUrl:"授权链接不是 http/https 地址,已阻止打开。"},Gge={volcengine:"火山引擎"},Xge={checkingPersistence:"正在检查持久化能力…",exitDevelopment:"退出开发环境",fileUploaded:"已上传文件到 Sandbox",filesUploaded:"已上传 {{count}} 个文件到 Sandbox",intelligentDevelopment:"智能开发",mode:{readOnly:"只读",workspaceWrite:"工作区写入",fullAccess:"完全访问"},approvalPolicy:{untrusted:"仅不可信命令",onRequest:"按需审批",never:"不审批"},reviewer:{user:"由我审批",autoReview:"自动审查"},labels:{approvalPolicy:"审批策略",file:"文件",fileNumber:"文件 {{number}}",mode:"沙箱模式",networkAccess:"网络访问",reviewer:"审批方式",workingDirectory:"工作目录"},network:{allowed:"允许",disabled:"关闭"},permissionsUpdated:"已更新当前 Sandbox Session 的 Codex 权限",persistenceUnknown:"暂时无法确认持久化能力",stoppedReady:"已停止,可继续输入",uploadedFilesPrompt:"以下文件已上传到当前 Sandbox 工作空间,请在任务中使用:",workspaceUpdated:"已更新工作空间"},Yge={addAgent:"添加智能体",addFromPackage:"从代码包添加",agent:"智能体",automations:"自动化",createAgent:"创建智能体",createSkill:"创建技能",cronJobs:"定时任务",issueFeedback:"问题反馈",library:"资源库",migrateAgent:"迁移智能体",newConversation:"新会话",optimizeSkill:"优化 {{name}}",search:"搜索",skill:"技能",skillLibrary:"技能库",systemInfo:"系统信息",updateAgent:"更新 {{name}}",codeProjects:"代码项目",reviewCenter:"审核中心"},Zge={title:"从工作区新建",description:"创建和管理代码项目,在 VS Code 中编写和调试"},Jge={actions:Lge,addAgent:$ge,approval:Fge,common:Bge,conversation:Uge,credentials:Qge,dialogs:zge,errors:Vge,feedback:Hge,greetings:qge,loading:Wge,oauth:Kge,providers:Gge,sandbox:Xge,titles:Yge,workspaceProjectEntry:Zge},YUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Lge,addAgent:$ge,approval:Fge,common:Bge,conversation:Uge,credentials:Qge,default:Jge,dialogs:zge,errors:Vge,feedback:Hge,greetings:qge,loading:Wge,oauth:Kge,providers:Gge,sandbox:Xge,titles:Yge,workspaceProjectEntry:Zge},Symbol.toStringTag,{value:"Module"})),ebe="自动化",tbe="连接研发工具,为智能体扩展自动化工作流",nbe="搜索自动化",ibe="自动化分类",rbe={development:"研发",channels:"消息渠道"},sbe="{{category}}自动化列表",obe="打开{{name}}",abe="仅本地部署可用",lbe="没有匹配的自动化",cbe="请尝试搜索其他名称",ube="返回自动化列表",dbe={"coding-agents":{name:"配置 Coding Agents",badge:"本地",description:"将 VeADK 和 AgentKit 内置 Skills 全局配置到 Trae、Claude Code 或 Codex。"},template:{name:"模板项目导入",description:"在您的仓库中创建一个可持续交付到 AgentKit Runtime 的最简智能体",title:"模板项目导入",subtitle:"把可直接启动 Studio 的 basic Agent 和持续交付配置加入仓库",panel:"提交后将创建一个 PR,同时导入 basic 项目和 AgentKit Runtime 发布工作流。",submitLabel:"导入模板并提交 PR",regionHelp:"必须与目标 Runtime 所在地域一致",pullRequest:{title:"feat: 导入 AgentKit basic 模板",description:"导入带有 AgentKit Studio App Server 的 basic Agent 项目,并添加持续发布到 AgentKit Runtime 的工作流。合并前请配置 {{provider}} Secrets。"},fields:{repository:{label:"GitHub 仓库",placeholder:"owner/repository",help:"支持 owner/repository 或完整 github.com URL"},baseBranch:{label:"目标分支",placeholder:"main",help:"留空时使用 main,PR 将以此分支为 base"},projectPath:{label:"Agent 项目目录",placeholder:"agentkit-basic-agent",help:"将在此目录新增 basic 项目;app.py 挂载完整 Studio App Server,并作为服务入口启动"},runtimeName:{label:"Runtime 名称",placeholder:"support-agent",help:"用于 AgentKit 发布配置"},runtimeId:{label:"运行时 ID",placeholder:"rt-xxxxxxxx",help:"持续更新的目标 AgentKit Runtime"}}},delivery:{name:"AgentKit Runtime 持续交付",description:"为您的仓库添加持续交付到 AgentKit Runtime 的自动化工作流。",title:"AgentKit Runtime 持续交付",subtitle:"用 Pull Request 把持续发布配置安全地加入代码仓库",panel:"提交后将在目标仓库创建发布分支,并发起包含 GitHub Actions 工作流的 PR。",submitLabel:"确定并提交 PR",regionHelp:"必须与目标 Runtime 所在地域一致",pullRequest:{title:"feat: 持续发布到 AgentKit Runtime",description:"新增 GitHub Actions 工作流,在目标分支更新时持续发布到 AgentKit Runtime。合并前请配置工作流所需的 {{provider}} Secrets。"},fields:{repository:{label:"GitHub 仓库",placeholder:"owner/repository",help:"支持 owner/repository 或完整 github.com URL"},baseBranch:{label:"目标分支",placeholder:"main",help:"留空时使用 main,PR 将以此分支为 base"},projectPath:{label:"Agent 项目目录",placeholder:".",help:"留空时使用仓库根目录;目录内需包含挂载完整 Studio App Server 的 app.py"},runtimeName:{label:"Runtime 名称",placeholder:"support-agent",help:"用于 AgentKit 发布配置"},runtimeId:{label:"运行时 ID",placeholder:"rt-xxxxxxxx",help:"持续更新的目标 AgentKit Runtime"}}},review:{name:"GitHub PR 自动评审",description:"通过 GitHub App 在隔离 Sandbox 中评审 Pull Request。",title:"GitHub PR 自动评审",subtitle:"通过 GitHub App 触发 Sandbox 评审,并将结果发布到 Pull Request",panel:"请先将 GitHub App 安装到目标仓库,再为每个仓库启用自动评审。",submitLabel:"安装 GitHub App",regionHelp:"",pullRequest:{title:"chore: 配置 PR 自动评审",description:"新增 GitHub Actions 工作流,在隔离 Sandbox 中评审同仓库 PR,并将结果发布为 GitHub Review。合并前请配置工作流所需 Secrets。"},fields:{repository:{label:"GitHub 仓库",placeholder:"owner/repository",help:"支持 owner/repository 或完整 github.com URL"},baseBranch:{label:"目标分支",placeholder:"main",help:"留空时使用 main,PR 将以此分支为 base"},sandboxToolId:{label:"沙箱工具 ID",placeholder:"tool-xxxxxxxx",help:"用于运行每次评审的 AgentKit CodeEnv"},modelName:{label:"评审模型",placeholder:"review-model",help:"注入 Sandbox 的代码评审模型名称"},modelBaseUrl:{label:"模型 API 地址",placeholder:"https://ark.example.com/api/v3",help:"必须使用 OpenAI 兼容的 HTTPS 地址"}}},"gitlab-review":{name:"GitLab MR 自动评审",description:"通过 GitLab 集成在隔离 Sandbox 中评审 Merge Request。"},feishu:{name:"飞书机器人",badge:"Beta",description:"创建飞书机器人,并将消息直接接入 AgentKit Runtime。"},"website-integration":{name:"网站集成",description:"将 AgentKit Runtime 以悬浮聊天窗口嵌入网站。"}},fbe={required:"必填",optional:"可选",region:"地域",tokenLabel:"GitHub Token",getToken:"获取 Token",createToken:"创建 GitHub Token",tokenPlaceholder:"需要仓库 Contents 与 Pull requests 写权限",tokenWorkflowPlaceholder:"需要 Contents、Pull requests、Workflows 写权限",hideToken:"隐藏 Token",showToken:"显示 Token",tokenHelp:"Token 仅用于本次提交,不会保存在浏览器或写入 PR",tokenWorkflowHelp:"此处 Token 用于创建配置 PR;它不是 Sandbox 的通用必填项,且不会保存在浏览器或写入 PR",prCreated:"PR #{{number}} 已创建",configPrCreated:"配置 PR #{{number}} 已创建",configPrNextStep:"合并后,后续同仓库 PR 会自动触发评审。",viewOnGitHub:"在 GitHub 查看",viewConfigPr:"查看配置 PR",secretsHeading:"合并 PR 前,请在仓库的 GitHub Actions Secrets 中配置:",secretsConfigHeading:"合并配置 PR 前,请在目标仓库添加运行时密钥",openSecrets:"打开 Secrets 设置",secretsPath:"路径:Settings → Secrets and variables → Actions → Repository secrets",repositoryConfigHelp:"将为 {{repository}} 添加 PR 自动评审配置",repositoryReviewHelp:"将使用 GitHub App 校验 {{repository}} 的 Pull Request",secretPair:"{{accessKey}}、{{secretKey}}(必填)",sessionToken:"{{sessionToken}}(使用临时凭据时必填)",requiredSecret:"{{name}}(必填)",temporaryCredentialRequired:"(使用临时凭据时必填)",requiredSuffix:"(必填)",submitting:"提交 PR 中…",validation:{required:"此项不能为空",repository:"请输入 owner/repository 或完整 GitHub 仓库 URL",baseBranch:"目标分支格式不正确",projectPath:"请输入仓库内的相对目录",runtimeId:"运行时 ID 格式不正确",sandboxToolId:"沙箱工具 ID 格式不正确",modelName:"模型名称格式不正确",modelBaseUrlSafe:"请输入不含凭据、查询参数或锚点的 HTTPS 地址",modelBaseUrl:"请输入有效的 HTTPS 地址",runtimeName:{required:"Runtime 名称为必填项",characters:"Runtime 名称只能包含英文字母、数字、下划线和连字符",length:"Runtime 名称长度须为 4-64 个字符"}}},hbe={title:"配置 Coding Agents",description:"把随 Studio 提供的 AgentKit Skills 全局安装到本地编码客户端。",retry:"重试",clients:{ariaLabel:"选择 Coding Agent",title:"本机客户端",detectAgain:"重新检测",detecting:"正在检测本机客户端…",detected:"已检测到客户端",available:"可用",unavailable:"未检测到"},skills:{ariaLabel:"选择内置 Skill",title:"内置 Skills",viewFiles:"查看文件",items:{"veadk-agent-development":{name:"VeADK Agent 开发",description:"使用 VeADK 开发和完善 Agent。"},"agentkit-cli":{name:"AgentKit CLI",description:"通过 AgentKit CLI 管理和部署 AgentKit 资源。"}}},global:{ariaLabel:"全局安装目录",title:"全局安装",description:"配置后可在本机其他项目中使用",empty:"选择客户端后显示对应安装目录。"},success:"已为 {{agentCount}} 个客户端配置 {{skillCount}} 个 Skill",selection:"已选择 {{agentCount}} 个客户端、{{skillCount}} 个 Skill",selectClient:"请先选择客户端",configuring:"正在配置…",configure:"配置",errors:{detect:"检测本机客户端失败",configure:"配置失败,请检查用户目录权限后重试"},preview:{description:"只读浏览随 Studio 提供的 Skill 文件",close:"关闭文件预览",loading:"正在读取文件…",error:"读取 Skill 文件失败",skillFiles:"{{name}} 文件",files:"文件",fileContent:"文件内容",notPreviewable:"此文件不是可预览的 UTF-8 文本。",noFiles:"没有可预览的文件。"}},pbe={title:"飞书机器人",description:"创建一个由 AgentKit Runtime 驱动的飞书智能体",panel:"填写已发布飞书应用的凭据,Studio 将生成 basic 智能体、创建独立 Runtime,并启用飞书消息长连接。",agentName:"智能体名称",agentNameHelp:"将作为新 Runtime 中的根智能体名称",region:"部署地域",regionHelp:"Runtime 与构建产物将创建在该地域",regions:{"cn-beijing":"北京","cn-shanghai":"上海"},appId:"飞书 App ID",appIdHelp:"来自飞书开放平台的应用凭证",appSecret:"飞书 App Secret",appSecretPlaceholder:"请输入 App Secret",appSecretHelp:"仅写入新 Runtime 的环境变量",hideSecret:"隐藏 App Secret",showSecret:"显示 App Secret",hide:"隐藏",show:"显示",confirmCancel:"取消部署将停止任务并清理已创建的 Runtime,确定继续吗?",status:{preparing:"正在生成 basic 智能体",running:"正在创建 Runtime",cancelling:"正在取消部署",succeeded:"飞书机器人 Runtime 已创建",cancelled:"部署已取消",failed:"创建失败"},steps:{prepare:"生成智能体",build:"构建镜像",deploy:"创建 Runtime",publish:"发布服务"},openConsole:"打开 Runtime 控制台",credentials:{title:"凭据处理",description:"App Secret 仅用于本次部署,不会写入生成源码或浏览器存储。"},cancelDeployment:"取消部署",creating:"正在创建…",create:"创建飞书机器人 Runtime",validation:{appId:"请输入飞书 App ID",appSecret:"请输入飞书 App Secret",agentName:{required:"名称为必填项",reserved:"user 是 Google ADK 保留名称,请使用其他名称",characters:"名称须以英文字母或下划线开头,且只能包含英文字母、数字和下划线"}},generatedAgent:{description:"一个通过飞书接收消息并提供帮助的智能助手。",instruction:"你是一个通过飞书为用户提供帮助的智能助手。准确理解用户问题,给出简洁、可靠的回答;信息不足时先提问澄清,不要臆造事实。"}},mbe={title:ebe,description:tbe,search:nbe,categoriesLabel:ibe,categories:rbe,resultsLabel:sbe,open:obe,localOnly:abe,emptyTitle:lbe,emptyDescription:cbe,backToAutomations:ube,cards:dbe,github:fbe,codingAgents:hbe,feishu:pbe},ZUe=Object.freeze(Object.defineProperty({__proto__:null,backToAutomations:ube,cards:dbe,categories:rbe,categoriesLabel:ibe,codingAgents:hbe,default:mbe,description:tbe,emptyDescription:cbe,emptyTitle:lbe,feishu:pbe,github:fbe,localOnly:abe,open:obe,resultsLabel:sbe,search:nbe,title:ebe},Symbol.toStringTag,{value:"Module"})),gbe={"zh-CN":"简体中文","en-US":"English"},JUe={languageNames:gbe},eQe=Object.freeze(Object.defineProperty({__proto__:null,default:JUe,languageNames:gbe},Symbol.toStringTag,{value:"Module"})),bbe={selectedExcerptLabel:"选中片段",commentLabel:"批注",commentSeparator:":",successTitle:"已加入 Bad case 评测集",successDescription:"这条批注已关联当前问题和完整模型回复。",done:"完成",ariaLabel:"批注选中的模型回复",title:"添加批注",content:"批注内容",placeholder:"说明问题或期望的修改方式",retryError:"{{error}},请重试。",cancel:"取消",submit:"加入 Bad Case"},ybe={attachment:"附件",image:"图片",preview:"预览 {{name}}",uploading:"上传中",uploadFailed:"上传失败",remove:"移除 {{name}}",previewDialog:"{{name}}预览",download:"下载",close:"关闭",reading:"正在读取文档…",loadFailed:"文档加载失败:{{error}}"},vbe={errorTitle:"云端日志错误",copyError:"复制完整错误信息",retry:"重试",statuses:{live:"实时",connecting:"连接中",retrying:"重连中",idle:"未连接"},title:"实例日志",description:"当前对话请求所在的 VeFaaS 实例",close:"关闭实例日志",instanceId:"实例 ID",waitingInstance:"等待实例",request:"请求 {{id}}",ariaLabel:"VeFaaS 实例实时日志",notCapturedTitle:"尚未捕获到实例",notCapturedDescription:"发送一条消息后,这里会显示实际处理请求的实例和实时日志。",connectingTitle:"正在连接实例日志",connectingDescription:"正在通过 Studio BFF 建立安全日志流。",emptyTitle:"暂无日志",emptyDescription:"已连接实例,等待新的日志输出。",retention:"日志自动刷新,仅保留最近 {{count}} 行"},xbe={title:"调用链路观测",statuses:{loading:"加载中",ready:"",collecting:"采集中",disabled:"未开启",forbidden:"权限不足",error:"加载失败"},errors:{collecting:"调用链路仍在采集中,请稍候。",disabled:"该 Agent 未开启链路观测,请到控制台开启后重试。",forbidden:"当前账号无权读取 APMPlus 调用链路,请联系管理员补充只读权限。",error:"调用链路加载失败,请稍后重试。"},callCount:"{{count}} 个调用 · {{duration}} ms",close:"关闭",loading:"加载调用链路…",retryNow:"立即重试",reload:"重新加载",empty:"该会话暂无调用链路(可能尚未产生调用)。",attributes:"属性",selectCall:"选择左侧的一个调用查看详情"},wbe={exportNote:"上述会话由 AgentKit Studio 导出,仅供参考",imageFailed:"图片生成失败,请重试。",browserUnsupported:"浏览器无法生成会话图片,请重试。",copyUnsupported:"当前浏览器不支持复制图片,请下载后使用。",exportFailed:"导出失败,请重试。",title:"导出会话",description:"选择格式并下载截至当前回复的全部输入与输出。",close:"关闭",generatingContent:"正在生成导出内容…",retry:"重试生成",previewPage:"预览第 1 页,共 {{count}} 页",previewAlt:"会话导出内容第 1 页,共 {{count}} 页",format:"导出格式",generatingFormat:"正在生成 {{format}}…",copying:"正在复制…",copiedFirst:"已复制第一页",copied:"已复制",copyFirst:"复制第一页",copyImage:"复制图片",generating:"正在生成…",downloadArchive:"下载 PNG 压缩包({{count}} 页)",downloadFormat:"下载 {{format}}"},Obe={unsupportedComponent:"不支持的组件:{{component}}",sandboxIdentity:"Codex Sandbox 执行标识",useSkill:"使用 {{name}} 技能",thinkingDone:"已完成思考",thinking:"思考中",justNow:"刚刚",sourceUnavailable:"暂时无法读取生成的源码,请稍后重试。",downloadStarted:"已开始下载",verifiedDelivery:"已验证交付物",generatedSource:"生成的 Agent 源码",entryPoint:"入口",fileCount:"文件数",size:"大小",validationTime:"验证时间",generationTime:"生成时间",checksPassed:"{{count}} 项检查通过",sourceReady:"源码已准备好,可部署",sourceGuidance:"源码已准备好,可查看、下载或部署;部署前请确认 Runtime 配置。",viewSource:"查看源码",preparing:"正在准备…",viewChanges:"查看本次变更",downloadSource:"下载源码",sourceNotReady:"源码尚未准备好",manualDeploy:"手动部署到 Runtime",deployAgent:"部署 Agent",beforeOptimization:"优化前",afterOptimization:"优化后",planStatuses:{pending:"待处理",in_progress:"进行中",completed:"已完成",failed:"未完成"},renderUi:"渲染 UI",truncated:"…(已截断)",agentAdjusting:"Agent 正在调整",sandboxDetails:"Codex Sandbox 详细输出",waitingCodex:"正在等待 Codex 输出",arguments:"参数",result:"返回",artifacts:"产物",downloadNamed:"下载 {{name}}",powerpoint:"PowerPoint 演示文稿",preview:"预览",download:"下载",previewDialog:"{{name}} 预览",closePreview:"关闭预览",slidePreview:"{{name}} 幻灯片预览",mcpToolset:"MCP 工具集",authorized:"已授权 · {{tool}}",authorizationRequired:"{{tool}} 需要授权",oauthDescription:"工具集 {{tool}} 使用 OAuth 保护,需登录授权后方可调用。",oauthProvider:"将跳转至 {{provider}} 完成登录。",oauthContinue:"授权完成后对话自动继续。",waitingAuthorization:"等待授权…",authorize:"去授权",missingAuthorizationUrl:"未在事件中找到授权地址。",tools:{web_search:{running:"正在进行网络搜索",done:"已完成网络搜索"},link_reader:{running:"正在读取网页",done:"已完成网页读取"},run_code:{running:"正在 AgentKit 沙箱中执行代码",done:"已在 AgentKit 沙箱中完成代码执行"},list_envs:{running:"正在查看可用环境",done:"已读取可用环境"},get_env_manifest:{running:"正在读取环境 Manifest",done:"已读取环境 Manifest"},execute_in_sandbox:{running:"正在环境中执行命令",done:"已在环境中完成命令执行"},delegate_to_codex_sandbox:{running:"Codex Sandbox 正在执行",done:"Codex Sandbox 已完成",failed:"Codex Sandbox 执行失败"},image_generate:{running:"正在生成图片",done:"已完成图片生成"},video_generate:{running:"正在生成视频",done:"已完成视频生成"},ppt_generate:{running:"正在生成 PPT",done:"已完成 PPT 生成"},load_memory:{running:"正在检索长期记忆",done:"已完成记忆检索"},load_knowledgebase:{running:"正在检索知识库",done:"已完成知识库检索"},load_skill:{running:"正在加载技能",done:"已加载技能"},collect_resources:{running:"正在收集可用资源",done:"已完成资源收集",failed:"资源收集失败"},create_agents:{running:"正在创建并运行 Agent",done:"已完成 Agent 创建",failed:"Agent 创建失败"}},createAgents:{categories:{skill_hub:"Skill Hub",skill_space:"AgentKit 技能中心",knowledge_base:"知识库",tool:"工具"},agentTypes:{llm:"LLM 智能体",sequential:"顺序智能体",parallel:"并行智能体",loop:"循环智能体",workflow:"工作流"},skill:"技能",subAgents:"子智能体",builtinTool:"内置工具",skillCenter:"AgentKit 技能中心",selfAuthoredTools:"自写工具",dependencies:"依赖:{{items}}",fullCode:"{{name}} 完整代码",itemCount:"{{label}} {{count}} 项",collectionAria:"召回资源信息",retrieving:"正在检索资源",retrievalFailed:"资源检索未完成",checkConfig:"请检查资源服务配置后重试。",notSearched:"未检索",notConfigured:"未配置",resourceList:"{{label}}资源列表",searchKeywords:"检索关键词",skillHubSkipped:"未提供检索关键词,本次未检索 Skill Hub。",sourceSkipped:"未配置 {{label}},本次未检索该来源。",noResources:"本次检索未返回该类别的资源。",resultAria:"创建 Agent 结果",creationFailed:"Agent 创建未完成",agentResources:"{{name}} 具备的资源",knowledgeBase:"知识库",toolsLabel:"工具",creating:"正在创建 Agent",noAgents:"没有可展示的 Agent",noAgentResult:"工具返回中未包含 Agent 配置或执行结果。",sourceLabels:{tool:"工具",knowledge:"AgentKit 知识库",skillCenter:"AgentKit 技能中心",unknown:"未知来源"},unnamedResource:"未命名资源",unnamedAgent:"未命名 Agent"},branchCompare:{ariaLabel:"分支对比",selectDirection:"选择方向",continue:"继续这个方向"},codexProgress:{planTitle:"Codex 执行计划",fallback:{fileChange:"修改文件",approval:"等待操作批准",status:"Codex 状态",command:"运行命令"},planSummary:"已完成 {{completed}}/{{total}} 项",command:{running:"正在执行命令",completed:"命令执行完成",failed:"命令执行失败"},projectFiles:"{{count}} 个项目文件",projectFile:"项目文件",fileChange:{running:"正在更新{{subject}}",completed:"已更新{{subject}}",failed:"更新{{subject}}失败"},externalTool:"外部工具",mcp:{running:"正在调用工具 {{tool}}",completed:"已调用工具 {{tool}}",failed:"工具 {{tool}} 调用未完成"},collaboration:{spawn_agent:{running:"正在启动子任务",completed:"子任务已启动",failed:"子任务启动失败"},send_input:{running:"正在向子任务发送信息",completed:"已向子任务发送信息",failed:"向子任务发送信息失败"},wait:{running:"正在等待子任务",completed:"子任务等待已结束",failed:"等待子任务失败"},close_agent:{running:"正在结束子任务",completed:"子任务已结束",failed:"子任务结束失败"},default:{running:"正在协调子任务",completed:"子任务协作已完成",failed:"子任务协作失败"}},webSearch:{running:"正在进行网络搜索",completed:"已完成网络搜索",failed:"网络搜索未完成"},errorDetail:"Codex 执行未完成。",errorTitle:"Codex 执行遇到错误"}},kbe={segments:{system:"系统与工具",input:"输入与历史",output:"输出与思考",remaining:"剩余"},modelUnavailable:"模型信息未提供",promptWithSystem:"提示词(含系统)",systemUnknown:"系统与工具占用未知",systemApprox:"系统与工具约 {{count}} Token",ariaKnown:"上下文已使用 {{percentage}}%,{{system}},{{inputLabel}} {{input}} Token,输出与思考 {{output}} Token,剩余 {{remaining}} Token",ariaUnknown:"{{model}},上下文窗口未知,会话累计使用 {{count}} Token",composition:"上下文构成",percentageUsed:"{{percentage}}% 已用",gridAria:"100 格上下文构成图,每格代表上下文窗口的百分之一",estimated:"估算",unknown:"未知",summaryPercentage:"{{used}} 已用,剩余 {{remaining}}",summaryTokens:"{{used}} 已用,剩余 {{remaining}},总计 {{total}}",overflow:"已超出上下文 {{count}} Token",title:"上下文用量",unknownModel:"暂未收录该模型的上下文窗口",unknownRuntime:"当前 Runtime 未提供模型信息"},Sbe={title:"添加 AgentKit 智能体",noAgents:"连接成功,但该地址未发现任何 Agent(/list-apps 为空)。",connectionFailed:"连接失败:{{error}}。请检查 URL、API Key,以及该网关是否允许跨域。",description:"填入 AgentKit 部署的访问地址与 API Key,将通过 ADK 协议连接,连接成功后其 Agent 会出现在左上角的下拉中。",url:"访问地址 URL",apiKeyHint:"以 Authorization: Bearer 方式连接",displayName:"显示名称(可选)",displayNameHint:"默认取 URL 的主机名",cancel:"取消",connecting:"连接中…",connect:"连接并添加"},Ebe={placeholder:"输入消息…",inputAria:"输入消息",generating:"正在生成",send:"发送"},Cbe={ariaLabel:"本轮调用上下文",removeSkill:"移除技能 {{name}}",removeAgent:"移除 Agent {{name}}"},Tbe={cardAria:"{{label}} 图表",viewAria:"{{label}} 显示方式",preview:"预览",code:"代码",invalidEcharts:"ECharts 配置不是有效且安全的数据对象,请切换到代码检查内容。",renderFailed:"图表暂时无法渲染,请切换到代码检查内容。",echartsAria:"ECharts 图表预览",rendering:"正在渲染图表…",mermaidFailed:"图表暂时无法渲染,请切换到代码查看 Mermaid 内容。",mermaidAria:"Mermaid 图表预览"},Abe={playVideo:"点击播放视频:{{name}}",enlargeImage:"放大预览:{{name}}",image:"图片",enlargeVideo:"点击放大视频",videoPreview:"视频预览",downloadVideo:"下载视频",close:"关闭"},_be={annotation:bbe,media:ybe,runtimeLogs:vbe,trace:xbe,share:wbe,blocks:Obe,tokenUsage:kbe,addAgentKit:Sbe,composer:Ebe,invocation:Cbe,visualization:Tbe,markdown:Abe},tQe=Object.freeze(Object.defineProperty({__proto__:null,addAgentKit:Sbe,annotation:bbe,blocks:Obe,composer:Ebe,default:_be,invocation:Cbe,markdown:Abe,media:ybe,runtimeLogs:vbe,share:wbe,tokenUsage:kbe,trace:xbe,visualization:Tbe},Symbol.toStringTag,{value:"Module"})),jbe={back:"返回",cancel:"取消",deploy:"部署",delete:"删除",loading:"读取中…",next:"下一步",notSupported:"暂不支持",previous:"上一步",required:"必填",retry:"重试",actions:"操作",value:"值",disabled:"关闭",enabled:"已开启",none:"无",close:"关闭",name:"名称",description:"描述",send:"发送"},Nbe={heading:"VeADK Agent 结构配置",importHint:"可在「创建 Agent」页通过「导入 YAML」重新载入。"},Rbe={agentName:{required:"名称为必填项",reserved:"user 是 Google ADK 保留名称,请使用其他名称",characters:"名称须以英文字母或下划线开头,且只能包含英文字母、数字和下划线"},runtimeName:{required:"Runtime 名称为必填项",characters:"Runtime 名称只能包含英文字母、数字、下划线和连字符",length:"Runtime 名称长度须为 4-64 个字符"}},Ibe={description:"一个基于 VeADK 构建的智能助手,理解用户意图并调用合适的工具完成任务。",instruction:`你是一个专业、可靠的智能助手。
+{{response}}`,emptyCloudResponse:"(响应正文为空)"},qme={loadFailed:"读取会话模式能力失败(HTTP {{status}})",invalidResponse:"会话模式能力响应格式错误"},Wme={nonJson:"{{fallback}}:服务端返回非 JSON 响应(HTTP {{status}},{{contentType}}){{detail}}"},Kme={busy:"工作区正在处理较多请求,请稍后重试",notFound:"工作区不存在",duplicates:"检测到多个个人工作区会话,请联系管理员处理",timeout:"工作区恢复超时,项目仍保留,请重试",unavailable:"工作区暂时无法恢复,原项目仍保留,请重试",persistence:"当前 Sandbox 未启用持久化快照,请检查工作区配置",startup:"个人工作区启动失败,请检查 Sandbox 状态",exists:"项目名称已存在,请从项目列表打开",directory:"项目目录不存在",configuration:"请先配置工作区 Sandbox 镜像",state:"暂时无法确认工作区状态,请重试",list:"恢复工作区或读取项目列表失败,请重试",create:"项目初始化失败,请确认镜像可用后重试",open:"恢复工作区或打开项目失败,请重试",connection:"工作区暂时无法连接,请重试",invalidWorkspaceUrl:"工作区返回了无效的访问地址",operation:"项目操作失败,请重试",invalidProjectUrl:"项目访问地址无效",listFallback:"读取项目列表失败",connectionState:"暂时无法连接工作区,请重试"},Gme={reporting:"正在补齐交付信息",packaging:"正在整理产物",savingVersion:"正在保存版本",finishing:"正在完成请求",submitResult:"提交构建结果",requestFailed:"任务请求失败,请重试。",invalidResponse:"任务状态响应无效。",eventGap:"正在补齐任务输出。",reconnecting:"连接暂时中断,正在重连。已有输出已保留。",input:{pending:"等待送达",sending:"正在确认送达",delivered:"已送达",withdrawn:"已停止发送"},plan:"执行计划",diff:"文件变更",preparing:"正在准备任务",preparingEnvironment:"正在准备开发环境…",connectingEnvironment:"正在连接开发环境…",processing:"正在处理请求",thinking:"正在思考",read:"读取文件 · {{target}}",listFiles:"查看目录 · {{target}}",search:"搜索 · {{target}}",command:"执行命令 · {{target}}",editFiles:"修改文件 · {{target}}",webSearch:"搜索网页 · {{target}}",processSummary:"已处理 {{count}} 项",duration:"{{seconds}} 秒",durationUnits:{milliseconds:"{{value}} 毫秒",hours:"{{value}} 小时",minutes:"{{value}} 分",seconds:"{{value}} 秒"},failedTools:"{{count}} 项执行失败",toolFailed:"执行失败",toolCalls:"{{count}} 次工具调用",turnDuration:"本轮耗时 {{duration}}",toolDuration:"工具累计耗时 {{duration}}",toolDurationPartial:"已记录工具耗时 {{duration}}",toolDurationHelp:"各工具执行耗时之和;并行调用可能使累计耗时超过本轮耗时。",turnStatus:{completed:"已完成",failed:"未完成",interrupted:"已中断",cancelled:"已中断",unavailable:"任务已结束"},notReported:"未上报",partial:"已记录",partialHelp:"本轮记录可能不完整。",tokenDetails:"本轮 Token 用量",model:"本轮模型",totalTokens:"总量",inputTokens:"输入",cachedInputTokens:"缓存命中输入",uncachedInputTokens:"未命中输入",cacheWriteInputTokens:"缓存写入",outputTokens:"输出",reasoningOutputTokens:"推理输出",cacheHitRate:"输入缓存命中率",tokenHelp:"缓存命中属于输入,推理输出属于输出,不重复计入总量。未命中输入 = 输入 − 缓存命中。"},P9={common:Cme,agentkitCli:Tme,cloudRegion:Ame,connections:_me,feishuBot:jme,requestError:Nme,runSse:Rme,runtimeLogs:Ime,search:Pme,skills:Dme,sse:Mme,identity:Lme,github:$me,video:Fme,websiteIntegration:Bme,knowledge:Ume,intelligentDevelopment:Qme,migrations:zme,sandbox:Vme,client:Hme,newChatCapabilities:qme,jsonResponse:Wme,workspaceProjects:Kme,developmentRuns:Gme},WUe=Object.freeze(Object.defineProperty({__proto__:null,agentkitCli:Tme,client:Hme,cloudRegion:Ame,common:Cme,connections:_me,default:P9,developmentRuns:Gme,feishuBot:jme,github:$me,identity:Lme,intelligentDevelopment:Qme,jsonResponse:Wme,knowledge:Ume,migrations:zme,newChatCapabilities:qme,requestError:Nme,runSse:Rme,runtimeLogs:Ime,sandbox:Vme,search:Pme,skills:Dme,sse:Mme,video:Fme,websiteIntegration:Bme,workspaceProjects:Kme},Symbol.toStringTag,{value:"Module"})),Xme="智能体审核",Yme="申请企业内全员使用,审批后生效",Zme="关闭",Jme="刷新",ege="状态",tge="申请人",nge="申请时间",ige="当前版本",rge="模型",sge="退回人",oge="通过人",age="审批时间",lge="智能体描述",cge="申请说明",uge="退回理由",dge="审批意见",fge="退回理由(必填)",hge="提交后内容已变化,请退回并重新申请",pge="撤回后可以修改 Agent,需要公开时重新申请",mge="取消公开后其他用户将无法继续使用,确定取消公开吗?",gge="取消",bge="确认",yge="正在保存",vge="取消公开",xge="撤回申请",wge="通过",Oge="直接公开",kge="申请公开",Sge="全员可见",Ege={pending:"待审核",approved:"已通过",returned:"已退回",withdrawn:"已撤回"},Cge="搜索智能体或申请人",Tge="地域",Age="全部状态",_ge="智能体",jge="操作",Nge="查看并审批",Rge="申请详情",Ige="没有符合条件的申请",Pge="暂无智能体审核申请",Dge="{{count}} / {{limit}} 字",KUe={title:Xme,dialogDescription:Yme,close:Zme,refresh:Jme,statusTitle:ege,submitter:tge,submittedAt:nge,version:ige,model:rge,returnedBy:sge,approvedBy:oge,reviewedAt:age,description:lge,message:cge,reason:uge,comment:dge,reasonRequired:fge,contentChanged:hge,withdrawConfirm:pge,unpublishConfirm:mge,cancel:gge,confirm:bge,saving:yge,unpublish:vge,withdraw:xge,return:"退回",approve:wge,publish:Oge,submit:kge,private:"仅自己可见",enterprise:Sge,status:Ege,search:Cge,region:Tge,all:Age,agent:_ge,actions:jge,review:Nge,details:Rge,noMatches:Ige,empty:Pge,textCount:Dge},GUe=Object.freeze(Object.defineProperty({__proto__:null,actions:jge,agent:_ge,all:Age,approve:wge,approvedBy:oge,cancel:gge,close:Zme,comment:dge,confirm:bge,contentChanged:hge,default:KUe,description:lge,details:Rge,dialogDescription:Yme,empty:Pge,enterprise:Sge,message:cge,model:rge,noMatches:Ige,publish:Oge,reason:uge,reasonRequired:fge,refresh:Jme,region:Tge,returnedBy:sge,review:Nge,reviewedAt:age,saving:yge,search:Cge,status:Ege,statusTitle:ege,submit:kge,submittedAt:nge,submitter:tge,textCount:Dge,title:Xme,unpublish:vge,unpublishConfirm:mge,version:ige,withdraw:xge,withdrawConfirm:pge},Symbol.toStringTag,{value:"Module"})),Mge={backToEvaluationCase:"返回评测案例",cancel:"取消",copied:"已复制",copy:"复制",exportConversation:"导出会话",retry:"重试"},Lge={title:"您想以哪种方式添加 Agent 来运行?",subtitle:"选择最适合你的方式,下一步即可开始",quickCreate:{title:"从 0 快速创建",description:"用智能、自定义、模板或工作流的方式从零创建一个 Agent。"},intelligent:{title:"智能模式",description:"描述目标,按你的意图构建、调试并验证 Agent。"},package:{title:"从代码包添加和部署",description:"上传 Agent 项目压缩包,查看代码并直接部署到 AgentKit Runtime。"},migrate:{title:"从存量迁移",description:"从您的 LangChain、Dify 等存量项目迁移至 AgentKit Runtime。"}},$ge={subject:{file:"文件修改",command:"命令执行"},decision:{accept:"已允许本次{{subject}}",acceptForSession:"已在本会话中允许{{subject}}",decline:"已拒绝{{subject}}",cancel:"已取消{{subject}}审批"},details:{command:"命令",grantRoot:"授权路径",cwd:"执行目录"}},Fge={noDescription:"暂无描述",region:"地域",unknownAgent:"未知 Agent"},Bge={agentTransfer:"智能体移交",annotationHint:"模型回复;选中文字后可添加批注",continueBranch:"继续“{{branch}}”这个方向",emptyResponse:"本次没有返回可显示的内容。",subagentDescription:"正在执行主 Agent 移交的任务。"},Uge={title:"需要配置 {{provider}} AK/SK",prefix:"智能体工作台需要 {{provider}} 凭据才能使用。请在运行环境中设置",and:"与",suffix:"后重试。"},Qge={buildRunning:{title:"当前构建仍在进行",description:"离开将停止本轮构建;当前会话仍会保留,可稍后从历史会话重新进入。",confirm:"停止并离开"},deleteThread:{title:"删除 Codex 历史会话",description:"将删除“{{name}}”,并从历史会话中移除。",confirm:"确认删除"},returnToCreate:{title:"返回创建首页?",description:"返回后当前填写的内容将会丢失,确定要返回吗?",confirm:"确定返回"}},zge={additionalAgentDeleteFailures:";另有 {{count}} 个失败",agentDeleteFailures:"{{count}} 个 Agent 删除失败:{{failures}}{{suffix}}",agentToolsMissing:"当前 Agent 缺少任务工具:{{tools}}",buildStopUnconfirmed:"已离开开发环境,但未能确认本轮构建已停止。任务可能仍在运行,请稍后从历史会话检查状态。",builtinAgentSendFailed:"内置智能体发送失败:{{message}}",bytePlusEvaluationUnsupported:"BytePlus 暂不支持 AgentKit 评测集",clipboardUnsupported:"当前浏览器不支持写入剪贴板。",cloudCodexEmptyReply:"云端 Codex 已结束,但没有生成回复,请重新发送任务。",cloudCodexSessionMissing:"云端 Codex Session 暂未出现在列表中,请稍后重试。",deploymentRuntimeIdMissing:"部署完成,但未返回 Runtime ID。",environmentExpired:"所选环境已失效,请刷新后重新选择。",environmentsLoadFailed:"读取环境失败",evaluationCaseSessionMissing:"这条案例缺少会话定位信息,无法跳转。",evaluationUnsupportedForReply:"当前回复暂不支持加入评测集",firstFrameRequired:"首尾帧生成需要先添加首帧图片。",incompletePromptOptimization:"提示词优化结果不完整,请重新优化后再试。",intelligentCapabilityCheckFailed:"智能开发能力检查失败(HTTP {{status}})",intelligentSessionCreateFailed:"智能开发会话创建失败",invalidIntelligentCapability:"智能开发模型能力格式错误。",localBffToolsNotConfigured:"本地 Studio BFF 没有配置工具。",localToolsLoadFailed:"读取本地工具失败",loginPopupBlocked:"登录窗口被浏览器拦截,请允许弹出窗口后重试。",loginPopupClosed:"登录窗口已关闭,请重新登录以继续当前操作。",mediaTooLarge:"{{fileName}} 超出当前平台允许的素材大小。",mountEnvironmentFailed:"挂载环境失败",noConnectedSandbox:"当前没有已连接的 Sandbox。",noCreateAgentPermission:"当前账号没有添加 Agent 的权限。",noManageAgentPermission:"当前账号没有管理 Agent 的权限。",noOptimizationBaseline:"当前版本没有可对比的优化前版本。",oauthUrlMissing:"事件中没有授权地址。",onlyCloudAgentUpdatable:"仅支持更新已部署的云端智能体。",optimizationVersionMissing:"无法找到本次优化对应的项目版本,可能已被删除。",persistentStorageNotConfigured:"管理员未配置持久化存储",readDraftFailed:"无法读取本机草稿,请稍后重试。",runtimeAgentNameMissing:"Runtime 缺少智能体名称,无法更新。",runtimeBffToolsDisabled:"当前 Runtime Agent 未开启 BFF 工具能力。",runtimeDeploymentConfigUnavailable:"该 Runtime 的原发布配置不可恢复,无法安全更新。",runtimeMissingForConnection:"缺少 Runtime 信息,无法连接智能体。",runtimeRegionMissingForDelete:"Runtime 缺少地域信息,无法删除",runtimeRegionMissingForUpdate:"Runtime 缺少地域信息,无法更新。",runtimeUpdateUnsupported:"当前 Runtime 不支持原地更新。",sandboxRuntimeUnavailable:"当前 Agent 没有可用的 Sandbox Runtime。",sandboxToolsUnavailable:"当前 Studio BFF 未提供 Sandbox 执行工具。",saveDraftLocationRejected:"浏览器拒绝保存当前草稿位置,请检查站点存储权限后重试。",saveDraftRejected:"浏览器拒绝保存草稿,请稍后重试。",selectSkillToOptimize:"请先选择需要优化的 Skill。",sessionMissingForMount:"当前会话不存在,无法挂载环境。",sessionNotReady:"会话尚未就绪。",sessionUnavailable:"当前会话不可用,请关闭后重试。",sourceNotReady:"该源码尚未准备好,请返回对话继续处理。",textVideoRejectsReferences:"文生视频不使用参考素材,请先移除已添加的图片或视频。",videoEditRequiresVideo:"视频编辑需要先添加待编辑视频。",videoExtendRequiresVideo:"视频续写需要先添加基础视频。",videoGenerationFailed:"视频生成失败,请稍后重试。",videoModeUnsupported:"当前平台暂不支持所选视频任务模式。",videoPreviewMissing:"视频任务已完成,但服务端未返回预览地址。",videoReferenceRequired:"参考素材生视频需要至少添加一项参考图片或参考视频。"},Vge={like:"赞",removeLike:"取消点赞",dislike:"踩",removeDislike:"取消点踩",reportIssue:"问题反馈",traceFlameGraph:"Tracing 火焰图"},Hge={0:"今天想做点什么?",1:"有什么可以帮你的?",2:"需要我帮你查点什么吗?",3:"有问题尽管问我",4:"嗨,我们开始吧",5:"开始一段新对话吧",6:"今天想先解决哪件事?",7:"把你的想法告诉我吧",8:"我们从哪里开始?",9:"有什么任务交给我?",10:"准备好一起推进了吗?",11:"说说你现在最关心的问题",12:"今天也一起把事情做好",13:"我在,随时可以开始",intelligentDevelopment:"让灵感自由生长"},qge={agentCapabilities:"正在检查 Agent 能力…",session:"加载会话…"},Wge={cancelled:"授权已取消。",pasteCallbackUrl:"授权完成后,请粘贴回调页面(浏览器地址栏)的完整 URL:",popupBlocked:"弹窗被拦截,请允许弹窗后重试。",unsupportedUrl:"授权链接不是 http/https 地址,已阻止打开。"},Kge={volcengine:"火山引擎"},Gge={checkingPersistence:"正在检查持久化能力…",exitDevelopment:"退出开发环境",fileUploaded:"已上传文件到 Sandbox",filesUploaded:"已上传 {{count}} 个文件到 Sandbox",intelligentDevelopment:"智能开发",mode:{readOnly:"只读",workspaceWrite:"工作区写入",fullAccess:"完全访问"},approvalPolicy:{untrusted:"仅不可信命令",onRequest:"按需审批",never:"不审批"},reviewer:{user:"由我审批",autoReview:"自动审查"},labels:{approvalPolicy:"审批策略",file:"文件",fileNumber:"文件 {{number}}",mode:"沙箱模式",networkAccess:"网络访问",reviewer:"审批方式",workingDirectory:"工作目录"},network:{allowed:"允许",disabled:"关闭"},permissionsUpdated:"已更新当前 Sandbox Session 的 Codex 权限",persistenceUnknown:"暂时无法确认持久化能力",stoppedReady:"已停止,可继续输入",uploadedFilesPrompt:"以下文件已上传到当前 Sandbox 工作空间,请在任务中使用:",workspaceUpdated:"已更新工作空间"},Xge={addAgent:"添加智能体",addFromPackage:"从代码包添加",agent:"智能体",automations:"自动化",createAgent:"创建智能体",createSkill:"创建技能",cronJobs:"定时任务",issueFeedback:"问题反馈",library:"资源库",migrateAgent:"迁移智能体",newConversation:"新会话",optimizeSkill:"优化 {{name}}",search:"搜索",skill:"技能",skillLibrary:"技能库",systemInfo:"系统信息",updateAgent:"更新 {{name}}",codeProjects:"代码项目",reviewCenter:"审核中心"},Yge={title:"从工作区新建",description:"创建和管理代码项目,在 VS Code 中编写和调试"},Zge={actions:Mge,addAgent:Lge,approval:$ge,common:Fge,conversation:Bge,credentials:Uge,dialogs:Qge,errors:zge,feedback:Vge,greetings:Hge,loading:qge,oauth:Wge,providers:Kge,sandbox:Gge,titles:Xge,workspaceProjectEntry:Yge},XUe=Object.freeze(Object.defineProperty({__proto__:null,actions:Mge,addAgent:Lge,approval:$ge,common:Fge,conversation:Bge,credentials:Uge,default:Zge,dialogs:Qge,errors:zge,feedback:Vge,greetings:Hge,loading:qge,oauth:Wge,providers:Kge,sandbox:Gge,titles:Xge,workspaceProjectEntry:Yge},Symbol.toStringTag,{value:"Module"})),Jge="自动化",ebe="连接研发工具,为智能体扩展自动化工作流",tbe="搜索自动化",nbe="自动化分类",ibe={development:"研发",channels:"消息渠道"},rbe="{{category}}自动化列表",sbe="打开{{name}}",obe="仅本地部署可用",abe="没有匹配的自动化",lbe="请尝试搜索其他名称",cbe="返回自动化列表",ube={"coding-agents":{name:"配置 Coding Agents",badge:"本地",description:"将 VeADK 和 AgentKit 内置 Skills 全局配置到 Trae、Claude Code 或 Codex。"},template:{name:"模板项目导入",description:"在您的仓库中创建一个可持续交付到 AgentKit Runtime 的最简智能体",title:"模板项目导入",subtitle:"把可直接启动 Studio 的 basic Agent 和持续交付配置加入仓库",panel:"提交后将创建一个 PR,同时导入 basic 项目和 AgentKit Runtime 发布工作流。",submitLabel:"导入模板并提交 PR",regionHelp:"必须与目标 Runtime 所在地域一致",pullRequest:{title:"feat: 导入 AgentKit basic 模板",description:"导入带有 AgentKit Studio App Server 的 basic Agent 项目,并添加持续发布到 AgentKit Runtime 的工作流。合并前请配置 {{provider}} Secrets。"},fields:{repository:{label:"GitHub 仓库",placeholder:"owner/repository",help:"支持 owner/repository 或完整 github.com URL"},baseBranch:{label:"目标分支",placeholder:"main",help:"留空时使用 main,PR 将以此分支为 base"},projectPath:{label:"Agent 项目目录",placeholder:"agentkit-basic-agent",help:"将在此目录新增 basic 项目;app.py 挂载完整 Studio App Server,并作为服务入口启动"},runtimeName:{label:"Runtime 名称",placeholder:"support-agent",help:"用于 AgentKit 发布配置"},runtimeId:{label:"运行时 ID",placeholder:"rt-xxxxxxxx",help:"持续更新的目标 AgentKit Runtime"}}},delivery:{name:"AgentKit Runtime 持续交付",description:"为您的仓库添加持续交付到 AgentKit Runtime 的自动化工作流。",title:"AgentKit Runtime 持续交付",subtitle:"用 Pull Request 把持续发布配置安全地加入代码仓库",panel:"提交后将在目标仓库创建发布分支,并发起包含 GitHub Actions 工作流的 PR。",submitLabel:"确定并提交 PR",regionHelp:"必须与目标 Runtime 所在地域一致",pullRequest:{title:"feat: 持续发布到 AgentKit Runtime",description:"新增 GitHub Actions 工作流,在目标分支更新时持续发布到 AgentKit Runtime。合并前请配置工作流所需的 {{provider}} Secrets。"},fields:{repository:{label:"GitHub 仓库",placeholder:"owner/repository",help:"支持 owner/repository 或完整 github.com URL"},baseBranch:{label:"目标分支",placeholder:"main",help:"留空时使用 main,PR 将以此分支为 base"},projectPath:{label:"Agent 项目目录",placeholder:".",help:"留空时使用仓库根目录;目录内需包含挂载完整 Studio App Server 的 app.py"},runtimeName:{label:"Runtime 名称",placeholder:"support-agent",help:"用于 AgentKit 发布配置"},runtimeId:{label:"运行时 ID",placeholder:"rt-xxxxxxxx",help:"持续更新的目标 AgentKit Runtime"}}},review:{name:"GitHub PR 自动评审",description:"通过 GitHub App 在隔离 Sandbox 中评审 Pull Request。",title:"GitHub PR 自动评审",subtitle:"通过 GitHub App 触发 Sandbox 评审,并将结果发布到 Pull Request",panel:"请先将 GitHub App 安装到目标仓库,再为每个仓库启用自动评审。",submitLabel:"安装 GitHub App",regionHelp:"",pullRequest:{title:"chore: 配置 PR 自动评审",description:"新增 GitHub Actions 工作流,在隔离 Sandbox 中评审同仓库 PR,并将结果发布为 GitHub Review。合并前请配置工作流所需 Secrets。"},fields:{repository:{label:"GitHub 仓库",placeholder:"owner/repository",help:"支持 owner/repository 或完整 github.com URL"},baseBranch:{label:"目标分支",placeholder:"main",help:"留空时使用 main,PR 将以此分支为 base"},sandboxToolId:{label:"沙箱工具 ID",placeholder:"tool-xxxxxxxx",help:"用于运行每次评审的 AgentKit CodeEnv"},modelName:{label:"评审模型",placeholder:"review-model",help:"注入 Sandbox 的代码评审模型名称"},modelBaseUrl:{label:"模型 API 地址",placeholder:"https://ark.example.com/api/v3",help:"必须使用 OpenAI 兼容的 HTTPS 地址"}}},"gitlab-review":{name:"GitLab MR 自动评审",description:"通过 GitLab 集成在隔离 Sandbox 中评审 Merge Request。"},feishu:{name:"飞书机器人",badge:"Beta",description:"创建飞书机器人,并将消息直接接入 AgentKit Runtime。"},"website-integration":{name:"网站集成",description:"将 AgentKit Runtime 以悬浮聊天窗口嵌入网站。"}},dbe={required:"必填",optional:"可选",region:"地域",tokenLabel:"GitHub Token",getToken:"获取 Token",createToken:"创建 GitHub Token",tokenPlaceholder:"需要仓库 Contents 与 Pull requests 写权限",tokenWorkflowPlaceholder:"需要 Contents、Pull requests、Workflows 写权限",hideToken:"隐藏 Token",showToken:"显示 Token",tokenHelp:"Token 仅用于本次提交,不会保存在浏览器或写入 PR",tokenWorkflowHelp:"此处 Token 用于创建配置 PR;它不是 Sandbox 的通用必填项,且不会保存在浏览器或写入 PR",prCreated:"PR #{{number}} 已创建",configPrCreated:"配置 PR #{{number}} 已创建",configPrNextStep:"合并后,后续同仓库 PR 会自动触发评审。",viewOnGitHub:"在 GitHub 查看",viewConfigPr:"查看配置 PR",secretsHeading:"合并 PR 前,请在仓库的 GitHub Actions Secrets 中配置:",secretsConfigHeading:"合并配置 PR 前,请在目标仓库添加运行时密钥",openSecrets:"打开 Secrets 设置",secretsPath:"路径:Settings → Secrets and variables → Actions → Repository secrets",repositoryConfigHelp:"将为 {{repository}} 添加 PR 自动评审配置",repositoryReviewHelp:"将使用 GitHub App 校验 {{repository}} 的 Pull Request",secretPair:"{{accessKey}}、{{secretKey}}(必填)",sessionToken:"{{sessionToken}}(使用临时凭据时必填)",requiredSecret:"{{name}}(必填)",temporaryCredentialRequired:"(使用临时凭据时必填)",requiredSuffix:"(必填)",submitting:"提交 PR 中…",validation:{required:"此项不能为空",repository:"请输入 owner/repository 或完整 GitHub 仓库 URL",baseBranch:"目标分支格式不正确",projectPath:"请输入仓库内的相对目录",runtimeId:"运行时 ID 格式不正确",sandboxToolId:"沙箱工具 ID 格式不正确",modelName:"模型名称格式不正确",modelBaseUrlSafe:"请输入不含凭据、查询参数或锚点的 HTTPS 地址",modelBaseUrl:"请输入有效的 HTTPS 地址",runtimeName:{required:"Runtime 名称为必填项",characters:"Runtime 名称只能包含英文字母、数字、下划线和连字符",length:"Runtime 名称长度须为 4-64 个字符"}}},fbe={title:"配置 Coding Agents",description:"把随 Studio 提供的 AgentKit Skills 全局安装到本地编码客户端。",retry:"重试",clients:{ariaLabel:"选择 Coding Agent",title:"本机客户端",detectAgain:"重新检测",detecting:"正在检测本机客户端…",detected:"已检测到客户端",available:"可用",unavailable:"未检测到"},skills:{ariaLabel:"选择内置 Skill",title:"内置 Skills",viewFiles:"查看文件",items:{"veadk-agent-development":{name:"VeADK Agent 开发",description:"使用 VeADK 开发和完善 Agent。"},"agentkit-cli":{name:"AgentKit CLI",description:"通过 AgentKit CLI 管理和部署 AgentKit 资源。"}}},global:{ariaLabel:"全局安装目录",title:"全局安装",description:"配置后可在本机其他项目中使用",empty:"选择客户端后显示对应安装目录。"},success:"已为 {{agentCount}} 个客户端配置 {{skillCount}} 个 Skill",selection:"已选择 {{agentCount}} 个客户端、{{skillCount}} 个 Skill",selectClient:"请先选择客户端",configuring:"正在配置…",configure:"配置",errors:{detect:"检测本机客户端失败",configure:"配置失败,请检查用户目录权限后重试"},preview:{description:"只读浏览随 Studio 提供的 Skill 文件",close:"关闭文件预览",loading:"正在读取文件…",error:"读取 Skill 文件失败",skillFiles:"{{name}} 文件",files:"文件",fileContent:"文件内容",notPreviewable:"此文件不是可预览的 UTF-8 文本。",noFiles:"没有可预览的文件。"}},hbe={title:"飞书机器人",description:"创建一个由 AgentKit Runtime 驱动的飞书智能体",panel:"填写已发布飞书应用的凭据,Studio 将生成 basic 智能体、创建独立 Runtime,并启用飞书消息长连接。",agentName:"智能体名称",agentNameHelp:"将作为新 Runtime 中的根智能体名称",region:"部署地域",regionHelp:"Runtime 与构建产物将创建在该地域",regions:{"cn-beijing":"北京","cn-shanghai":"上海"},appId:"飞书 App ID",appIdHelp:"来自飞书开放平台的应用凭证",appSecret:"飞书 App Secret",appSecretPlaceholder:"请输入 App Secret",appSecretHelp:"仅写入新 Runtime 的环境变量",hideSecret:"隐藏 App Secret",showSecret:"显示 App Secret",hide:"隐藏",show:"显示",confirmCancel:"取消部署将停止任务并清理已创建的 Runtime,确定继续吗?",status:{preparing:"正在生成 basic 智能体",running:"正在创建 Runtime",cancelling:"正在取消部署",succeeded:"飞书机器人 Runtime 已创建",cancelled:"部署已取消",failed:"创建失败"},steps:{prepare:"生成智能体",build:"构建镜像",deploy:"创建 Runtime",publish:"发布服务"},openConsole:"打开 Runtime 控制台",credentials:{title:"凭据处理",description:"App Secret 仅用于本次部署,不会写入生成源码或浏览器存储。"},cancelDeployment:"取消部署",creating:"正在创建…",create:"创建飞书机器人 Runtime",validation:{appId:"请输入飞书 App ID",appSecret:"请输入飞书 App Secret",agentName:{required:"名称为必填项",reserved:"user 是 Google ADK 保留名称,请使用其他名称",characters:"名称须以英文字母或下划线开头,且只能包含英文字母、数字和下划线"}},generatedAgent:{description:"一个通过飞书接收消息并提供帮助的智能助手。",instruction:"你是一个通过飞书为用户提供帮助的智能助手。准确理解用户问题,给出简洁、可靠的回答;信息不足时先提问澄清,不要臆造事实。"}},pbe={title:Jge,description:ebe,search:tbe,categoriesLabel:nbe,categories:ibe,resultsLabel:rbe,open:sbe,localOnly:obe,emptyTitle:abe,emptyDescription:lbe,backToAutomations:cbe,cards:ube,github:dbe,codingAgents:fbe,feishu:hbe},YUe=Object.freeze(Object.defineProperty({__proto__:null,backToAutomations:cbe,cards:ube,categories:ibe,categoriesLabel:nbe,codingAgents:fbe,default:pbe,description:ebe,emptyDescription:lbe,emptyTitle:abe,feishu:hbe,github:dbe,localOnly:obe,open:sbe,resultsLabel:rbe,search:tbe,title:Jge},Symbol.toStringTag,{value:"Module"})),mbe={"zh-CN":"简体中文","en-US":"English"},ZUe={languageNames:mbe},JUe=Object.freeze(Object.defineProperty({__proto__:null,default:ZUe,languageNames:mbe},Symbol.toStringTag,{value:"Module"})),gbe={selectedExcerptLabel:"选中片段",commentLabel:"批注",commentSeparator:":",successTitle:"已加入 Bad case 评测集",successDescription:"这条批注已关联当前问题和完整模型回复。",done:"完成",ariaLabel:"批注选中的模型回复",title:"添加批注",content:"批注内容",placeholder:"说明问题或期望的修改方式",retryError:"{{error}},请重试。",cancel:"取消",submit:"加入 Bad Case"},bbe={attachment:"附件",image:"图片",preview:"预览 {{name}}",uploading:"上传中",uploadFailed:"上传失败",remove:"移除 {{name}}",previewDialog:"{{name}}预览",download:"下载",close:"关闭",reading:"正在读取文档…",loadFailed:"文档加载失败:{{error}}"},ybe={errorTitle:"云端日志错误",copyError:"复制完整错误信息",retry:"重试",statuses:{live:"实时",connecting:"连接中",retrying:"重连中",idle:"未连接"},title:"实例日志",description:"当前对话请求所在的 VeFaaS 实例",close:"关闭实例日志",instanceId:"实例 ID",waitingInstance:"等待实例",request:"请求 {{id}}",ariaLabel:"VeFaaS 实例实时日志",notCapturedTitle:"尚未捕获到实例",notCapturedDescription:"发送一条消息后,这里会显示实际处理请求的实例和实时日志。",connectingTitle:"正在连接实例日志",connectingDescription:"正在通过 Studio BFF 建立安全日志流。",emptyTitle:"暂无日志",emptyDescription:"已连接实例,等待新的日志输出。",retention:"日志自动刷新,仅保留最近 {{count}} 行"},vbe={title:"调用链路观测",statuses:{loading:"加载中",ready:"",collecting:"采集中",disabled:"未开启",forbidden:"权限不足",error:"加载失败"},errors:{collecting:"调用链路仍在采集中,请稍候。",disabled:"该 Agent 未开启链路观测,请到控制台开启后重试。",forbidden:"当前账号无权读取 APMPlus 调用链路,请联系管理员补充只读权限。",error:"调用链路加载失败,请稍后重试。"},callCount:"{{count}} 个调用 · {{duration}} ms",close:"关闭",loading:"加载调用链路…",retryNow:"立即重试",reload:"重新加载",empty:"该会话暂无调用链路(可能尚未产生调用)。",attributes:"属性",selectCall:"选择左侧的一个调用查看详情"},xbe={exportNote:"上述会话由 AgentKit Studio 导出,仅供参考",imageFailed:"图片生成失败,请重试。",browserUnsupported:"浏览器无法生成会话图片,请重试。",copyUnsupported:"当前浏览器不支持复制图片,请下载后使用。",exportFailed:"导出失败,请重试。",title:"导出会话",description:"选择格式并下载截至当前回复的全部输入与输出。",close:"关闭",generatingContent:"正在生成导出内容…",retry:"重试生成",previewPage:"预览第 1 页,共 {{count}} 页",previewAlt:"会话导出内容第 1 页,共 {{count}} 页",format:"导出格式",generatingFormat:"正在生成 {{format}}…",copying:"正在复制…",copiedFirst:"已复制第一页",copied:"已复制",copyFirst:"复制第一页",copyImage:"复制图片",generating:"正在生成…",downloadArchive:"下载 PNG 压缩包({{count}} 页)",downloadFormat:"下载 {{format}}"},wbe={unsupportedComponent:"不支持的组件:{{component}}",sandboxIdentity:"Codex Sandbox 执行标识",useSkill:"使用 {{name}} 技能",thinkingDone:"已完成思考",thinking:"思考中",justNow:"刚刚",sourceUnavailable:"暂时无法读取生成的源码,请稍后重试。",downloadStarted:"已开始下载",verifiedDelivery:"已验证交付物",generatedSource:"生成的 Agent 源码",entryPoint:"入口",fileCount:"文件数",size:"大小",validationTime:"验证时间",generationTime:"生成时间",checksPassed:"{{count}} 项检查通过",sourceReady:"源码已准备好,可部署",sourceGuidance:"源码已准备好,可查看、下载或部署;部署前请确认 Runtime 配置。",viewSource:"查看源码",preparing:"正在准备…",viewChanges:"查看本次变更",downloadSource:"下载源码",sourceNotReady:"源码尚未准备好",manualDeploy:"手动部署到 Runtime",deployAgent:"部署 Agent",beforeOptimization:"优化前",afterOptimization:"优化后",planStatuses:{pending:"待处理",in_progress:"进行中",completed:"已完成",failed:"未完成"},renderUi:"渲染 UI",truncated:"…(已截断)",agentAdjusting:"Agent 正在调整",sandboxDetails:"Codex Sandbox 详细输出",waitingCodex:"正在等待 Codex 输出",arguments:"参数",result:"返回",artifacts:"产物",downloadNamed:"下载 {{name}}",powerpoint:"PowerPoint 演示文稿",preview:"预览",download:"下载",previewDialog:"{{name}} 预览",closePreview:"关闭预览",slidePreview:"{{name}} 幻灯片预览",mcpToolset:"MCP 工具集",authorized:"已授权 · {{tool}}",authorizationRequired:"{{tool}} 需要授权",oauthDescription:"工具集 {{tool}} 使用 OAuth 保护,需登录授权后方可调用。",oauthProvider:"将跳转至 {{provider}} 完成登录。",oauthContinue:"授权完成后对话自动继续。",waitingAuthorization:"等待授权…",authorize:"去授权",missingAuthorizationUrl:"未在事件中找到授权地址。",tools:{web_search:{running:"正在进行网络搜索",done:"已完成网络搜索"},link_reader:{running:"正在读取网页",done:"已完成网页读取"},run_code:{running:"正在 AgentKit 沙箱中执行代码",done:"已在 AgentKit 沙箱中完成代码执行"},list_envs:{running:"正在查看可用环境",done:"已读取可用环境"},get_env_manifest:{running:"正在读取环境 Manifest",done:"已读取环境 Manifest"},execute_in_sandbox:{running:"正在环境中执行命令",done:"已在环境中完成命令执行"},delegate_to_codex_sandbox:{running:"Codex Sandbox 正在执行",done:"Codex Sandbox 已完成",failed:"Codex Sandbox 执行失败"},image_generate:{running:"正在生成图片",done:"已完成图片生成"},video_generate:{running:"正在生成视频",done:"已完成视频生成"},ppt_generate:{running:"正在生成 PPT",done:"已完成 PPT 生成"},load_memory:{running:"正在检索长期记忆",done:"已完成记忆检索"},load_knowledgebase:{running:"正在检索知识库",done:"已完成知识库检索"},load_skill:{running:"正在加载技能",done:"已加载技能"},collect_resources:{running:"正在收集可用资源",done:"已完成资源收集",failed:"资源收集失败"},create_agents:{running:"正在创建并运行 Agent",done:"已完成 Agent 创建",failed:"Agent 创建失败"}},createAgents:{categories:{skill_hub:"Skill Hub",skill_space:"AgentKit 技能中心",knowledge_base:"知识库",tool:"工具"},agentTypes:{llm:"LLM 智能体",sequential:"顺序智能体",parallel:"并行智能体",loop:"循环智能体",workflow:"工作流"},skill:"技能",subAgents:"子智能体",builtinTool:"内置工具",skillCenter:"AgentKit 技能中心",selfAuthoredTools:"自写工具",dependencies:"依赖:{{items}}",fullCode:"{{name}} 完整代码",itemCount:"{{label}} {{count}} 项",collectionAria:"召回资源信息",retrieving:"正在检索资源",retrievalFailed:"资源检索未完成",checkConfig:"请检查资源服务配置后重试。",notSearched:"未检索",notConfigured:"未配置",resourceList:"{{label}}资源列表",searchKeywords:"检索关键词",skillHubSkipped:"未提供检索关键词,本次未检索 Skill Hub。",sourceSkipped:"未配置 {{label}},本次未检索该来源。",noResources:"本次检索未返回该类别的资源。",resultAria:"创建 Agent 结果",creationFailed:"Agent 创建未完成",agentResources:"{{name}} 具备的资源",knowledgeBase:"知识库",toolsLabel:"工具",creating:"正在创建 Agent",noAgents:"没有可展示的 Agent",noAgentResult:"工具返回中未包含 Agent 配置或执行结果。",sourceLabels:{tool:"工具",knowledge:"AgentKit 知识库",skillCenter:"AgentKit 技能中心",unknown:"未知来源"},unnamedResource:"未命名资源",unnamedAgent:"未命名 Agent"},branchCompare:{ariaLabel:"分支对比",selectDirection:"选择方向",continue:"继续这个方向"},codexProgress:{planTitle:"Codex 执行计划",fallback:{fileChange:"修改文件",approval:"等待操作批准",status:"Codex 状态",command:"运行命令"},planSummary:"已完成 {{completed}}/{{total}} 项",command:{running:"正在执行命令",completed:"命令执行完成",failed:"命令执行失败"},projectFiles:"{{count}} 个项目文件",projectFile:"项目文件",fileChange:{running:"正在更新{{subject}}",completed:"已更新{{subject}}",failed:"更新{{subject}}失败"},externalTool:"外部工具",mcp:{running:"正在调用工具 {{tool}}",completed:"已调用工具 {{tool}}",failed:"工具 {{tool}} 调用未完成"},collaboration:{spawn_agent:{running:"正在启动子任务",completed:"子任务已启动",failed:"子任务启动失败"},send_input:{running:"正在向子任务发送信息",completed:"已向子任务发送信息",failed:"向子任务发送信息失败"},wait:{running:"正在等待子任务",completed:"子任务等待已结束",failed:"等待子任务失败"},close_agent:{running:"正在结束子任务",completed:"子任务已结束",failed:"子任务结束失败"},default:{running:"正在协调子任务",completed:"子任务协作已完成",failed:"子任务协作失败"}},webSearch:{running:"正在进行网络搜索",completed:"已完成网络搜索",failed:"网络搜索未完成"},errorDetail:"Codex 执行未完成。",errorTitle:"Codex 执行遇到错误"}},Obe={segments:{system:"系统与工具",input:"输入与历史",output:"输出与思考",remaining:"剩余"},modelUnavailable:"模型信息未提供",promptWithSystem:"提示词(含系统)",systemUnknown:"系统与工具占用未知",systemApprox:"系统与工具约 {{count}} Token",ariaKnown:"上下文已使用 {{percentage}}%,{{system}},{{inputLabel}} {{input}} Token,输出与思考 {{output}} Token,剩余 {{remaining}} Token",ariaUnknown:"{{model}},上下文窗口未知,会话累计使用 {{count}} Token",composition:"上下文构成",percentageUsed:"{{percentage}}% 已用",gridAria:"100 格上下文构成图,每格代表上下文窗口的百分之一",estimated:"估算",unknown:"未知",summaryPercentage:"{{used}} 已用,剩余 {{remaining}}",summaryTokens:"{{used}} 已用,剩余 {{remaining}},总计 {{total}}",overflow:"已超出上下文 {{count}} Token",title:"上下文用量",unknownModel:"暂未收录该模型的上下文窗口",unknownRuntime:"当前 Runtime 未提供模型信息"},kbe={title:"添加 AgentKit 智能体",noAgents:"连接成功,但该地址未发现任何 Agent(/list-apps 为空)。",connectionFailed:"连接失败:{{error}}。请检查 URL、API Key,以及该网关是否允许跨域。",description:"填入 AgentKit 部署的访问地址与 API Key,将通过 ADK 协议连接,连接成功后其 Agent 会出现在左上角的下拉中。",url:"访问地址 URL",apiKeyHint:"以 Authorization: Bearer 方式连接",displayName:"显示名称(可选)",displayNameHint:"默认取 URL 的主机名",cancel:"取消",connecting:"连接中…",connect:"连接并添加"},Sbe={placeholder:"输入消息…",inputAria:"输入消息",generating:"正在生成",send:"发送"},Ebe={ariaLabel:"本轮调用上下文",removeSkill:"移除技能 {{name}}",removeAgent:"移除 Agent {{name}}"},Cbe={cardAria:"{{label}} 图表",viewAria:"{{label}} 显示方式",preview:"预览",code:"代码",invalidEcharts:"ECharts 配置不是有效且安全的数据对象,请切换到代码检查内容。",renderFailed:"图表暂时无法渲染,请切换到代码检查内容。",echartsAria:"ECharts 图表预览",rendering:"正在渲染图表…",mermaidFailed:"图表暂时无法渲染,请切换到代码查看 Mermaid 内容。",mermaidAria:"Mermaid 图表预览"},Tbe={playVideo:"点击播放视频:{{name}}",enlargeImage:"放大预览:{{name}}",image:"图片",enlargeVideo:"点击放大视频",videoPreview:"视频预览",downloadVideo:"下载视频",close:"关闭"},Abe={annotation:gbe,media:bbe,runtimeLogs:ybe,trace:vbe,share:xbe,blocks:wbe,tokenUsage:Obe,addAgentKit:kbe,composer:Sbe,invocation:Ebe,visualization:Cbe,markdown:Tbe},eQe=Object.freeze(Object.defineProperty({__proto__:null,addAgentKit:kbe,annotation:gbe,blocks:wbe,composer:Sbe,default:Abe,invocation:Ebe,markdown:Tbe,media:bbe,runtimeLogs:ybe,share:xbe,tokenUsage:Obe,trace:vbe,visualization:Cbe},Symbol.toStringTag,{value:"Module"})),_be={back:"返回",cancel:"取消",deploy:"部署",delete:"删除",loading:"读取中…",next:"下一步",notSupported:"暂不支持",previous:"上一步",required:"必填",retry:"重试",actions:"操作",value:"值",disabled:"关闭",enabled:"已开启",none:"无",close:"关闭",name:"名称",description:"描述",send:"发送"},jbe={heading:"VeADK Agent 结构配置",importHint:"可在「创建 Agent」页通过「导入 YAML」重新载入。"},Nbe={agentName:{required:"名称为必填项",reserved:"user 是 Google ADK 保留名称,请使用其他名称",characters:"名称须以英文字母或下划线开头,且只能包含英文字母、数字和下划线"},runtimeName:{required:"Runtime 名称为必填项",characters:"Runtime 名称只能包含英文字母、数字、下划线和连字符",length:"Runtime 名称长度须为 4-64 个字符"}},Rbe={description:"一个基于 VeADK 构建的智能助手,理解用户意图并调用合适的工具完成任务。",instruction:`你是一个专业、可靠的智能助手。
你的目标是准确理解用户的需求,并给出条理清晰、简洁有用的回答。
约束:
- 信息不足时主动提问澄清,不要臆造事实。
- 需要时合理调用可用的工具,并说明关键结论。
-- 保持礼貌、专业的语气。`},Pbe={requestFailed:"请求失败 ({{status}}){{detail}}",a2aSpaces:{credentialsMissing:"服务端未配置云厂商 AK/SK,无法访问 AgentKit 智能体中心",loginRequired:"请先登录以访问 AgentKit 智能体中心"},vikingKnowledge:{credentialsMissing:"服务端未配置云厂商 AK/SK,无法访问 VikingDB 知识库",loginRequired:"请先登录以访问 VikingDB 知识库"},vikingMemory:{credentialsMissing:"服务端未配置云厂商 AK/SK,无法访问 VikingDB 记忆库",loginRequired:"请先登录以访问 VikingDB 记忆库"},mcpGateway:{missingHttpTool:"请返回“添加 MCP 工具”并添加至少一个 HTTP MCP 服务;MCP 稳定性治理不支持 stdio 服务。",missingUrl:"已添加的 HTTP MCP 工具缺少有效服务地址,请返回“添加 MCP 工具”补充后再发布。"},customModel:{fallbackName:"自定义模型",apiKeyLabel:"{{name}} 模型 API Key",fallbackApiKeyLabel:"{{name}} 的备用模型 {{model}} API Key"},deploymentEnv:{serverInjected:"由服务端注入",selectedApiKeyPlaceholder:"由所选 API Key 注入",mcpInjectedComment:"由已添加的 MCP 工具注入",restoredPlaceholder:"由 Studio 服务端安全恢复",generatedMcpPlaceholder:"由已添加的 HTTP MCP 工具自动生成",restoredHelp:"更新时由 Studio 服务端合并 MCP 地址与认证,不向浏览器返回旧密钥。",mergedMcpHelp:"Studio 服务端自动合并 MCP 地址与可选认证,不向浏览器返回旧密钥。",listSeparator:"、",requirementHint:"优化项“{{labels}}”依赖此配置。",requiredBy:"优化项“{{labels}}”依赖此配置,请填写 {{key}}。",required:"请填写 {{label}}({{key}})。",invalidJson:"JSON 格式不正确"},drafts:{unsupportedVersion:"本机草稿版本暂不受支持,请升级 Studio 后重试。",invalidFormat:"本机草稿数据格式无效。",readFailed:"无法读取本机草稿,浏览器中的草稿数据可能已损坏。",quotaExceeded:"浏览器存储空间不足,草稿未保存。请删除不需要的草稿或清理此站点的浏览器存储后重试。",writeRejected:"浏览器拒绝保存草稿,请检查站点存储权限后重试。"},skills:{searchFailed:"搜索失败 ({{status}})",downloadFailed:"下载技能失败 ({{status}})",agentKitRequestFailed:"AgentKit Skills 请求失败",missingManifest:"{{location}} 缺少 SKILL.md",invalidParentPath:"{{location}} 包含非法路径(..):{{path}}",invalidPath:"{{location}} 包含非法路径:{{path}}",localDescription:"本地 Skill",folderSource:"文件夹",noManifest:"{{location}} 中未发现 SKILL.md"},zip:{invalid:"无效的 zip:找不到 EOCD",tooManyFiles:"zip 文件数不能超过 {{count}} 个",tooLarge:"zip 解压后的内容过大"}},Dbe={back:"返回开发会话",runtimeName:"Runtime 名称",runtimeNameExists:"Runtime 名称已存在,请更换后重试",checkingRuntimeName:"正在检查 Runtime 名称",verifiedSource:"已验证源码",deployableSource:"可部署源码",verifiedByCodex:"已通过 Codex 云端验证",entryPoint:"入口",files:"文件",artifact:"构建产物",validationReport:"验证报告",verifiedHint:"源码由服务端从已验证交付物物化,浏览器文件不能替换。",unverifiedHint:"源码已由服务端安全物化,部署前请确认 Runtime 配置。",env:{requiredPlaceholder:"请输入 {{key}}",optionalPlaceholder:"可选:{{key}}"}},Mbe={name:"代码包",back:"返回创建方式",reading:"正在读取代码包",readingEllipsis:"正在读取代码包…",uploadFirst:"请先上传代码包",uploadAriaLabel:"代码包上传",upload:"上传代码包",reupload:"重新上传代码包",uploadPrompt:"请上传代码包",filesRecognized:"已识别 {{count}} 个文件,点击区域可重新上传",dropHint:"点击或拖拽上传,支持 .zip 格式,最大 50 MB;可使用 app.py,或由 agentkit.yaml 声明入口",viewFiles:"查看文件",chooseFile:"选择代码包",errors:{invalidFormat:"请选择 .zip 格式的代码包。",tooLarge:"代码包不能超过 50 MB。",invalidPath:"压缩包包含非法路径:{{name}}",empty:"压缩包中没有可部署的文件。",tooManyFiles:"代码包文件数不能超过 {{count}} 个。",duplicateFile:"代码包包含重复文件:{{path}}",manifestParse:"agentkit.yaml 无法解析:{{detail}}",manifestRoot:"agentkit.yaml 根节点必须是对象。",manifestCommon:"agentkit.yaml 的 common 必须是对象。",entryPointType:"agentkit.yaml 的 common.entry_point 必须是文件路径。",entryPointInvalid:"agentkit.yaml 的 common.entry_point 不是有效文件路径。",entryPointMissing:"代码包中不存在 agentkit.yaml 声明的启动入口:{{entryPoint}}",defaultEntryPointMissing:"代码包根目录必须包含 app.py,或在 agentkit.yaml 的 common.entry_point 中声明已有入口。"}},Lbe={label:"Agent 执行画布",readOnlyLabel:"只读 Agent 执行画布",minimapLabel:"执行流程缩略图",controls:{ariaLabel:"执行流程控制",zoomIn:"放大",zoomOut:"缩小",fitView:"适应视图"},rootAgent:"主 Agent",unnamedStep:"未命名步骤",terminals:{input:"用户请求",output:"最终回复"},edges:{then:"然后",continueLoop:"继续循环",call:"调用"},patterns:{llm:{label:"智能体",description:"理解任务并直接完成一个具体工作"},sequential:{label:"分步协作",description:"内部步骤按照顺序依次执行"},parallel:{label:"同时处理",description:"内部步骤同时工作,完成后统一汇总"},loop:{label:"循环执行",description:"重复执行内部步骤,直到满足停止条件"},a2a:{label:"远程智能体",description:"调用已经存在的远程 Agent"}},actions:{insertHere:"在这里插入步骤",deleteNamed:"删除 {{name}}",deleteNode:"删除节点",addSubagent:"添加子 Agent",addParallelStep:"添加一个同时处理的步骤",addLoopStep:"添加循环步骤",addNextStep:"添加下一个步骤",addFirst:"添加到最前",addLast:"添加到最后"}},$be={title:"智能构建",subtitle:"描述需求,完成 Agent 的构建、调试与验证。",model:{label:"模型",placeholder:"选择模型",retiring:"即将下线",currentConfiguration:"当前配置",loadError:"加载模型列表失败"},availability:{checking:"正在检查智能开发能力…",unavailable:"当前无法使用智能模式,请返回后重试。"},goal:{title:"从目标开始",continueTitle:"继续优化项目",hint:"只需说明 Agent 要解决的问题;如有影响结果的关键信息,会在开始前向你确认。",continueHint:"说明这次要调整的内容,完成后会保存为新版本。",basedOn:"基于",clearSelection:"取消选择",label:"目标描述",optimizationLabel:"优化目标",placeholder:"例如:创建一个能读取销售数据、生成周报并校验输出格式的 Agent",optimizationPlaceholder:"例如:增加数据来源标注,并在信息不足时先向用户确认"},actions:{preparing:"准备中…",build:"开始构建",optimize:"开始优化"},preparation:{accepted:"目标已收到,马上开始实现",preparing:"正在创建任务环境…",starting:"环境已就绪,正在启动 Codex…",next:"接下来会先梳理目标和实现方式,再编写、运行和验证 Agent。"},tasks:{title:"进行中的任务",hint:"离开页面后仍会继续,可随时回来查看和补充要求。",refresh:"刷新任务列表",loading:"正在读取任务…",empty:"暂无进行中的任务",emptyHint:"开始构建后,可以从这里回到任务。",loadError:"暂时无法读取任务,请重试。",openError:"暂时无法打开任务,请重试。",startedAt:"开始于 {{time}}",open:"查看任务",opening:"正在连接…",states:{queued:"等待开始",running:"构建中",recovering:"正在重连",waiting_user:"等待你的回复",stopping:"正在停止",succeeded:"已完成",failed:"未完成",cancelled:"已停止"}}},Fbe={title:"已保存项目",description:"选择已有版本继续优化,或查看、下载和部署源码。",refresh:"刷新项目列表",checkingStorage:"正在检查项目存储…",unavailableTitle:"暂时无法读取项目",storageCheckError:"无法确认项目存储状态,请稍后重试。",storageNotConfigured:"项目存储尚未配置。",loadingMigrated:"正在读取已迁移项目…",loadingSaved:"正在读取已保存项目…",loadingVersions:"正在读取项目版本…",unknownTime:"时间未知",sourceDownloaded:"源码已下载。",projectSummary_one:"{{count}} 个版本 · 更新于 {{time}}",projectSummary_other:"{{count}} 个版本 · 更新于 {{time}}",versionSummary_one:"{{time}} · {{count}} 个文件",versionSummary_other:"{{time}} · {{count}} 个文件",noVersionDescription:"暂无版本描述",latestVersion:"最新版本",defaultVersionName:"版本 · {{time}}",rename:{projectTitle:"修改项目名称",versionTitle:"修改版本名称",projectLabel:"项目名称",versionLabel:"版本名称",hint:"支持中英文、数字和常见标点,最多 {{max}} 个字符。",required:"请输入名称。",tooLong:"名称不能超过 {{max}} 个字符。",invalidCharacters:"名称不能包含换行、控制字符、不可见格式字符或 < >。",save:"保存名称",saving:"保存中…",updated:"名称已更新。",failed:"名称保存失败,请重试。"},verified:"已验证",pendingVerification:"待确认",viewSource:"查看源码",download:"下载",downloading:"下载中…",optimize:"去优化",optimizeUnavailable:"去优化,暂不支持",errors:{projects:"无法读取已保存项目。",source:"无法读取项目源码。",versions:"无法读取项目版本。",download:"下载源码失败。",prepareDeployment:"无法准备部署源码。",deleteVersion:"删除项目版本失败。",migrated:"无法读取已迁移项目",saved:"无法读取已保存项目"},empty:{migratedTitle:"还没有已迁移的项目",savedTitle:"还没有已保存的项目",migratedDescription:"完成首次迁移后,源码会自动保存在这里。",savedDescription:"完成首次构建后,源码会自动保存在这里。",noVersions:"这个项目还没有可用版本。"},compare:{selected:"已选择 {{count}}/2",selectedLabel:"已选择",select:"选择",view:"查看对比",start:"对比版本"},delete:{title:"删除这个版本?",onlyVersion:"“{{name}}”只有这一个版本,删除后项目也会移除。此操作无法撤销。",description:"该版本的源码和验证记录将永久删除,其他版本不受影响。",confirm:"删除版本"}},Bbe={title:"选择创建方式",subtitle:"以不同模式构建您的智能体",features:"特性",quick:{title:"快速模式",description:"动态派生子智能体自主完成任务",features:{dynamicSubagents:"动态派生子智能体",autonomousPlanning:"自主规划执行",collaboration:"多智能体协作",summary:"自动汇总结果",skills:"按需调用技能",trace:"任务过程可追踪"}},traditional:{title:"传统模式",description:"高度自定义您的智能体结构",features:{visualConfig:"可视化配置",migration:"存量智能体迁移",debugging:"实时调试",optimization:"可选性能优化",parameters:"精细参数控制"}}},Ube={placeholder:"输入系统提示词;键入 ## 加空格可创建二级标题…",toolbar:{undo:"撤销 {{shortcut}}",redo:"重做 {{shortcut}}",paragraph:"正文",quote:"引用",heading:"标题 {{level}}",selectBlockType:"选择文本类型",blockType:"文本类型",bold:"加粗",removeBold:"取消加粗",italic:"斜体",removeItalic:"取消斜体",bulletedList:"无序列表",numberedList:"有序列表"}},Qbe={local:{duplicatesSkipped:"已跳过重复技能:{{names}}",invalidDrop:"请拖入包含 SKILL.md 的文件夹或一个 .zip 文件",readError:"读取失败:{{detail}}",dropLabel:"拖入文件夹或 ZIP,自动识别 Skill",hint:"每个技能需包含 SKILL.md。支持包含多个技能的目录。",reading:"正在读取文件…",fileCount:"本地 · {{count}} 个文件"},hub:{searchError:"搜索失败,请稍后重试。",searchPlaceholder:"搜索火山 Find Skill 技能广场,例如 数据分析、PDF…",search:"搜索",searching:"正在搜索…",noResults:"没有找到匹配的技能,换个关键词试试。",hint:"输入关键词搜索火山 Find Skill 技能广场,所选技能会在生成项目时下载到 skills/ 目录。"},space:{loadError:"加载失败",loadingSpaces:"正在加载 AgentKit Skills 中心…",noSpaces:"此账号下没有 AgentKit Skills 中心。",selectSpace:"选择 AgentKit Skills 中心",openConsole:"在火山引擎控制台打开",loadingSkills:"正在加载技能列表…",noSkills:"此 AgentKit Skills 中心暂无技能。"}},zbe={unnamedNode:"未命名节点",editInstruction:"点击编辑指令…",controls:{ariaLabel:"工作流画布控制",zoomIn:"放大",zoomOut:"缩小",fitView:"适应视图"},sections:{info:"工作流信息",execution:"执行方式",nodes:"节点",nodeConfig:"节点配置"},types:{sequential:{label:"顺序",description:"节点依次执行"},parallel:{label:"并行",description:"节点同时执行"},loop:{label:"循环",description:"节点循环执行"}},placeholders:{description:"这个工作流做什么…",agentDescription:"这个 Agent 做什么…",instruction:"你是一个…"},errors:{workflowNameUnique:"名称须与 Agent 节点名称保持唯一",agentNameUnique:"Agent 名称在当前工作流中必须唯一"},dragHint:"拖拽到画布,或点击下方按钮添加",agentNode:"Agent 节点",addNode:"添加节点",connectHint:"拖拽节点的圆点连线以表达执行顺序。",create:"创建工作流",deleteNode:"删除节点",nameHelp:"仅使用英文字母、数字和下划线,且名称保持唯一。",instruction:"指令 (instruction)",tools:"工具 (逗号分隔)",nodeId:"节点 ID",empty:{selectNode:"选择一个节点以编辑其配置",summary:"共 {{nodes}} 个节点 · {{edges}} 条连线"}},Vbe={ariaLabel:"快速模式创建",progress:"快速模式创建进度",steps:{agent:{label:"智能体",title:"基本信息",description:"设置智能体的名称、用途、行为方式与能力"},environment:{label:"执行环境",title:"配置执行环境",description:"选择默认环境或已构建的自定义环境"},deployment:{label:"部署偏好",title:"部署偏好",description:"定义 AgentKit 云上参数"}},model:{label:"模型",source:"模型来源",name:"模型名称",fallbacks:"Fallback 模型",fallbackPlaceholder:"备用模型名称",addFallback:"添加备用模型",addProviderFallback:"添加其他服务商",removeFallback:"移除",fallbackType:"备用模型类型",fallbackSameProvider:"同服务商",fallbackOtherProvider:"其他服务商",apiKeyEnv:"API Key 环境变量",invalidApiKeyEnv:"环境变量名只能包含字母、数字和下划线,且不能以数字开头。",fallbackHelp:"同服务商备用模型复用主模型连接;其他服务商会使用单独的 provider、API Base 和 API Key。",fallbackIgnored:"空值、重复值或与主模型相同的模型会被忽略。",provider:"服务商 Provider",invalidApiBase:"请输入合法的 http:// 或 https:// 链接。",volcengineArk:"火山方舟",custom:"自定义",gateway:"模型网关",comingSoon:"待上线",currentApiKey:"当前 API Key",currentConfiguration:"当前配置",loadingApiKeys:"正在加载 API Key",selectApiKey:"选择 API Key",searchApiKeys:"搜索 API Key 名称",noApiKeys:"暂无可用 API Key",loadingModels:"正在加载模型",selectModel:"选择模型",searchModels:"搜索名称、Model ID 或服务商",noModels:"没有可用的模型",apiKeyPlaceholder:"请输入模型 API Key",credentialsLoadError:"模型凭据加载失败",modelsLoadError:"模型列表加载失败"},identity:{unnamedPool:"未命名用户池",currentPool:"{{value}}(当前用户池)",userPool:"用户池",loading:"正在加载用户池",placeholder:"请选择用户池",search:"搜索用户池",empty:"当前账号下暂无 Identity 用户池",currentHint:"当前 Studio 的登录 JWT 将透传访问此 Runtime",mismatchHint:"所选用户池不是当前 Studio 使用的用户池,部署后无法从 Studio 调用此 Runtime",selectionHint:"当前 Studio 使用的用户池已在列表中标注"},agent:{namePlaceholder:"输入智能体名称",descriptionPlaceholder:"说明这个智能体可以做什么",prompt:"提示词",promptPlaceholder:"定义角色、目标和行为边界",skills:"技能",addSkill:"添加技能"},validation:{descriptionRequired:"请输入描述",promptRequired:"请输入提示词",modelRequired:"请选择模型",apiKeyRequired:"请先填写或选择模型 API Key",instanceIntegers:"最小实例数必须为大于等于 0 的整数,最大实例数必须为大于 0 的整数",instanceOrder:"最小实例数不能大于最大实例数",userPoolRequired:"请选择用于 Runtime 鉴权的用户池"},deployment:{runtimeName:"Runtime 名称",runtimeNameUpdateHint:"更新时保持现有 Runtime 名称不变",runtimeNameHint:"仅支持英文字母、数字、下划线和连字符",region:"发布区域",authentication:"鉴权方式",apiKeyDescription:"默认方式,使用 Runtime API Key 访问",userPoolDescription:"使用 Identity 用户池签发的 JWT",sessionStorage:"会话存储",inMemoryStorage:"In-memory 临时存储",backends:{sqlite:"SQLite 文件",mysql:"MySQL",postgresql:"PostgreSQL"},instances:"实例设置",minInstances:"最小实例数",maxInstances:"最大实例数",inMemoryHint:"为避免多实例间会话丢失,推荐将 Runtime 固定为 1~1",networkMode:"网络模式",network:{public:"公网",private:"私网",both:"公网与私网"},subnetIds:"子网 ID(可选,多个用逗号分隔)",sharedInternet:"VPC 内共享公网出口",sharedInternetHint:"允许私网 Runtime 通过共享出口访问公网",evaluationSets:"评测集",createEvaluationSets:"自动创建评测集",evaluationSetsHint:"部署成功后自动创建 Good Case 和 Bad Case 评测集",resources:"资源配置",complete:"部署已完成",preparing:"正在准备部署…"},environmentVariables:{title:"环境变量",add:"添加变量",nameAriaLabel:"环境变量名称",valueAriaLabel:"{{name}} 的值",deleteNamed:"删除 {{name}}"},actions:{updateAgain:"再次更新",deployAgain:"重新部署",updateAndPublish:"更新并发布"}},Hbe={actions:{addSubagent:"添加子 Agent",clearRoot:"清空根 Agent",clearRootConfirmation:"清空根 Agent 的全部配置和子 Agent?此操作无法撤销。"},workspace:{progress:"Agent 创建进度",modes:{build:"架构",validate:"调试",optimize:"优化",environment:"环境",publish:"发布"},titles:{build:"个性化您的智能体架构",validate:"调试您的智能体",optimize:"为您的智能体选择优化项",environment:"配置云上环境",publish:"准备好部署您的智能体"}},sections:{type:{label:"Agent 类型",hint:"选择 Agent 类型"},basic:{label:"基本信息",hint:"名称、描述与系统提示词"},model:{label:"模型配置",hint:"模型与服务(可选)"},tools:{label:"工具",hint:"可调用的能力"},skills:{label:"技能",hint:"声明式技能"},knowledge:{label:"知识库",hint:"外部知识检索"},memory:{label:"记忆",hint:"短期与长期记忆"},subagents:{label:"子 Agent",hint:"嵌套协作"},review:{label:"完成",hint:"预览并创建"}},agentTypes:{ariaLabel:"Agent 类型",remoteChildOnly:"远程智能体只能作为子步骤使用",llm:{label:"智能体",fullLabel:"LLM 智能体",description:"大模型驱动,自主完成任务"},sequential:{label:"分步协作",fullLabel:"顺序型智能体",description:"子 Agent 按顺序依次执行"},parallel:{label:"同时处理",fullLabel:"并行型智能体",description:"子 Agent 并行执行后汇总"},loop:{label:"循环执行",fullLabel:"循环型智能体",description:"子 Agent 循环执行到满足条件"},a2a:{label:"远程智能体",fullLabel:"远程 Agent",description:"通过 A2A 协议调用远程 Agent"}},basic:{agentName:"Agent 名称",name:"名称",agentDescription:"智能体描述",descriptionPlaceholder:"简要描述这个 Agent 的用途,便于团队识别…",nameHelp:"遵循 Google ADK 命名规则,且在执行流程中保持唯一。",rootDescriptionHelp:"完整描述会保留;部署时会自动整理为符合 Runtime 规范的单行描述。",descriptionHelp:"描述会显示在 Agent 列表与选择器中。",orchestratorHelp:"这是一个协作容器,本身不生成回答。请在左侧画布中添加任务步骤,并通过拖拽调整它们的位置。",maxIterations:"最大轮次",maxIterationsHelp:"循环编排反复执行子 Agent,直到满足条件或达到该轮次上限。",agentCenter:"AgentKit 智能体中心",agentCenterHelp:"远程 Agent 的名称、描述和能力来自中心返回的 Agent Card。系统会根据每轮任务动态发现并挂载匹配的 Agent。",moreOptions:"更多选项",systemPrompt:"系统提示词",loadingMarkdown:"正在加载 Markdown 编辑器…",markdownHelp:"支持 Markdown 快捷输入,例如键入 ## 加空格创建二级标题。",unnamed:"未命名",unnamedAgent:"未命名智能体"},validation:{remoteRoot:"远程 Agent 只能作为子 Agent",missingRegistry:"请选择 AgentKit 智能体中心",name:{required:"名称为必填项",reserved:"user 是 Google ADK 保留名称,请使用其他名称",characters:"名称须以英文字母或下划线开头,且只能包含英文字母、数字和下划线"},duplicateName:"Agent 名称在当前结构中必须唯一",missingDescription:"描述为必填项",mcpDuplicateName:"MCP 名称重复,请为每个服务使用唯一名称",mcpDuplicateUrl:"MCP 地址重复,请删除重复服务后再发布",missingSubagent:"缺少子 Agent",missingPrompt:"系统提示词为必填项",apiKeyRequired:"请先填写或选择模型 API Key",missingSubagentDetail:"{{type}}至少需要添加一个子 Agent 后才能调试或发布。",problem:"{{name}}:{{problem}}"},ai:{ariaLabel:"AI 自动填写 Agent 配置",minimumLength:"请至少输入 {{count}} 个字符。",replaceConfirmation:"生成的新配置会替换当前画布和属性,确定继续吗?",placeholder:"描述目标,使用 {{model}} 模型一键生成配置",generate:"智能生成",generating:"正在智能生成",success:"生成成功",regenerate:"重新生成",failed:"智能生成失败"},debug:{ariaLabel:"智能体调试工作区",unavailable:"当前后端暂不支持生成 Agent 调试运行。",baseline:"基准组",comparison:"对照组 {{count}}",selectModel:"请选择模型",enterDescription:"请输入描述",enterPrompt:"请输入系统提示词",duplicateConfiguration:"测试配置不能重复",starting:"启动中…",applyAndRestart:"应用并重启",restart:"重新启动",start:"启动环境",defaultModel:"默认模型",testConfiguration:"测试配置",deleteVariant:"删除 {{name}}",deleteVariantGroup:"删除对照组",creatingEnvironment:"正在创建测试环境…",configurationChanged:"配置已变更,请重新启动环境。",ready:"环境已就绪",readyHint:"发送消息以比较智能体回复。",startHint:"先完善配置,再启动环境。",viewTraceNamed:"查看 {{name}} 的调用链路",traceUnavailable:"发送消息后可查看调用链路",trace:"调用链路",useConfiguration:"使用此配置",finishConfiguration:"完成配置",finishAndStart:"完成并启动",currentAgentModel:"当前 Agent 模型",configurationHint:"修改仅用于本次对比,选择使用后才会进入部署流程。",messagePlaceholder:"向已启动的测试环境发送消息…",startOneFirst:"请先启动至少一个测试环境",addVariant:"添加对照组",traceTitle:"调用链路 · {{name}}",leaveTitle:"离开调试?",leaveDescription:"离开调试页面后,当前环境将被清理。您可以通过重新启动环境进行新的测试。",cleaning:"清理中…",confirmLeave:"确定离开",closeLeaveConfirmation:"关闭离开调试确认"},optimization:{ariaLabel:"智能体优化选项",scenario:"优化场景",components:"优化组件",bytePlusUnavailable:"BytePlus 账号暂不支持 Harness Sidecar 优化项。请保持优化项为空后继续部署,普通 BytePlus 智能体不受影响。",releaseScenario:"优化场景:{{profile}}",profiles:{default:{label:"自定义",description:"按需选择组件,不勾选时不启动 Sidecar。"},ops:{label:"运维场景",description:"适用于运维诊断、数据库、日志和监控 MCP。"}},groups:{quality:"提升回答质量",cost:"降低运行成本",stability:"增强运行稳定性"},options:{context_engine:{label:"上下文治理",description:"治理上下文组装、任务锚定和上下文预算。"},compressor:{label:"上下文与结果压缩",description:"压缩长上下文和大型工具结果,降低 Token 成本。"},verifier:{label:"回答校验与修复",description:"校验证据和回答,在失败时执行修复或告警。"},long_run_control:{label:"Goal 任务控制",description:"管理 Goal 任务的进度、续跑和结束条件。"},mcp_resilience:{label:"MCP 稳定性治理",description:"治理连接、超时、空结果、大返回和调用预算;默认包含 SQL 只读保护。"}}},model:{label:"模型",source:"模型来源",volcanoArk:"火山方舟",volcengineArk:"火山方舟",bytePlusModelArk:"BytePlus ModelArk",custom:"自定义",gateway:"模型网关",comingSoon:"待上线",configuration:"模型配置",name:"模型名称",fallbacks:"Fallback 模型",fallbackPlaceholder:"备用模型名称",addFallback:"添加备用模型",addProviderFallback:"添加其他服务商",removeFallback:"移除",fallbackType:"备用模型类型",fallbackSameProvider:"同服务商",fallbackOtherProvider:"其他服务商",apiKeyEnv:"API Key 环境变量",invalidApiKeyEnv:"环境变量名只能包含字母、数字和下划线,且不能以数字开头。",fallbackHelp:"同服务商备用模型复用主模型连接;其他服务商会使用单独的 provider、API Base 和 API Key。",fallbackIgnored:"空值、重复值或与主模型相同的模型会被忽略。",provider:"服务商 Provider",invalidApiBase:"请输入合法的 http:// 或 https:// 链接。",liteLlmProviders:"LiteLLM 支持列表",apiKeyPlaceholder:"请输入模型 API Key",available:"已开通",retiring:"即将下线",notActivated:"未开通",unavailable:"暂不可用",apiKeyLoadError:"加载 Ark API Key 失败",loadingApiKeys:"正在加载 API Key…",selectApiKey:"选择 API Key",currentApiKey:"当前 API Key",apiKeyList:"API Key 列表",searchApiKey:"搜索 API Key",searchApiKeyName:"搜索 API Key 名称",noApiKeys:"暂无可用 API Key",noMatchingApiKey:"没有匹配的 API Key",loading:"正在加载模型…",loaded:"已加载 {{count}} 个模型",loadError:"加载模型失败",selectModel:"选择模型",selectProviderModel:"选择服务商模型",providerModels:"服务商模型",search:"搜索模型",searchPlaceholder:"搜索名称、Model ID 或服务商",noMatches:"没有匹配的模型",empty:"暂无可用模型",unknownStatus:"未知状态",refresh:"刷新",refreshing:"刷新中…",activate:"开通",activateAction:"前往开通",currentConfiguration:"当前配置"},tools:{builtIn:"内置工具",builtInHelp:"勾选 VeADK 提供的内置能力,生成时会自动补全 import 与所需环境变量。",codeExecution:"代码执行配置",codeExecutionHelp:"指定 AgentKit 代码执行沙箱。",mcp:"MCP 工具"},catalog:{web_search:{label:"联网搜索",description:"火山引擎 Web Search,获取实时信息。"},parallel_web_search:{label:"并行联网搜索",description:"并行发起多条搜索查询,更快汇总。"},link_reader:{label:"网页读取",description:"抓取并阅读给定链接的正文内容。"},web_scraper:{label:"网页爬取",description:"结构化爬取网页(需要 Scraper 服务)。"},image_generate:{label:"图像生成",description:"文生图(Doubao Seedream)。"},image_edit:{label:"图像编辑",description:"图生图 / 编辑(Doubao SeedEdit)。"},video_generate:{label:"视频生成",description:"文/图生视频(Doubao Seedance),含任务查询。"},text_to_speech:{label:"语音合成 (TTS)",description:"把文本转成语音(火山语音)。"},run_code:{label:"代码执行",description:"在沙箱中执行代码。"},vesearch:{label:"VeSearch 智能搜索",description:"火山 VeSearch(需要 bot 端点)。"},links:{console:"控制台",documentation:"文档"},env:{modelAgentName:{comment:"模型名称"},embeddingModelName:{comment:"向量化模型(记忆/知识库需要)"},vikingMemoryProject:{comment:"VikingDB 记忆库项目"},vikingMemoryRegion:{comment:"VikingDB 记忆库地域"},vikingMemoryType:{comment:"记忆类型"},feishuAppId:{comment:"飞书应用 App ID"},feishuAppSecret:{comment:"飞书应用 App Secret",placeholder:"输入 App Secret"},registrySpaceId:{comment:"AgentKit 智能体中心",placeholder:"请选择智能体中心"},registryTopK:{comment:"召回 Agent 数量"},registryRegion:{comment:"AgentKit 智能体中心地域"},registryEndpoint:{comment:"AgentKit 智能体中心 OpenAPI 地址"},agentKitToolId:{comment:"代码执行沙箱 ID"},agentKitToolRegion:{comment:"AgentKit Tools 地域"},openVikingUrl:{comment:"OpenViking 服务地址"},openVikingMemoryUserId:{comment:"记忆归属 ID",help:"对应 viking://user/<此值>/peers/<请求用户>/memories 中的 user 段;用于隔离 Agent、租户或业务场景,默认 default。"},openVikingMemoryPolicy:{comment:"记忆策略",help:"记忆的抽取策略和隔离策略,不填写时使用官方默认策略。"},openVikingKnowledgeUserId:{comment:"知识库归属 ID",help:"未配置资源目录时用于默认路径 viking://user/<此值>/resources/<知识库索引>/,默认 default。"},openVikingTargetUri:{comment:"知识库资源目录",help:"留空时由 KnowledgeBase index 自动生成;填写后直接检索该 OpenViking 资源目录,优先级最高。"},tlsServiceName:{comment:"TLS topic_id,留空自动创建"}}},backends:{shortTerm:{local:{label:"本地内存",description:"进程内,不持久化。适合开发调试。"},sqlite:{label:"SQLite 文件",description:"持久化到本地 .db 文件。"},mysql:{label:"MySQL",description:"持久化到 MySQL。"},postgresql:{label:"PostgreSQL",description:"持久化到 PostgreSQL。"}},longTerm:{local:{label:"本地向量库",description:"进程内 llama-index 向量库。"},opensearch:{label:"OpenSearch",description:"OpenSearch 向量检索。"},redis:{label:"Redis",description:"Redis 向量检索。"},viking:{label:"VikingDB Memory",description:"VikingDB 记忆库(支持用户画像)。"},openviking:{label:"OpenViking Memory",description:"OpenViking 长期记忆,按用户维度保存和检索偏好、事件与实体。"},mem0:{label:"Mem0",description:"Mem0 托管记忆服务。"}},knowledge:{viking:{label:"VikingDB Knowledge",description:"VikingDB 知识库。"},opensearch:{label:"OpenSearch",description:"OpenSearch 向量检索。"},context_search:{label:"Context Search",description:"火山 Context Search 引擎(无需向量化)。"},openviking:{label:"OpenViking Knowledge",description:"OpenViking 资源目录知识库,无需向量化模型配置。"}}},exporters:{apmplus:{label:"APMPlus",description:"火山 APMPlus 应用性能监控。"},cozeloop:{label:"CozeLoop",description:"扣子 CozeLoop 链路观测。"},tls:{label:"TLS (日志服务)",description:"火山 TLS 日志服务导出。"}},knowledge:{title:"知识库",description:"启用外部知识检索(RAG),让 Agent 基于你的资料作答。",backend:"知识库后端",vikingDatabase:"VikingDB 知识库"},memory:{shortTerm:"短期记忆",shortTermDescription:"存储单会话上下文",shortTermBackend:"短期记忆后端",longTerm:"长期记忆",longTermDescription:"存储跨会话上下文,通常使用向量化检索",longTermBackend:"长期记忆后端",vikingDatabase:"VikingDB 记忆库",autoSave:"自动保存会话到长期记忆",autoSaveDescription:"会话结束时自动把内容写入长期记忆,无需手动调用。"},mcp:{removeTool:"删除 MCP 工具",namePlaceholder:"名称(可选)",urlPlaceholder:"MCP 服务地址",pathWarning:"当前填写的是网关根地址。仅当根路径就是 MCP Endpoint 时可直接使用;否则请补充完整服务路径。",tokenPlaceholder:"Bearer Token(可选)",showToken:"显示 Bearer Token",hideToken:"隐藏 Bearer Token",commandPlaceholder:"命令,例如 npx",argsPlaceholder:"参数,以空格分隔",stdioHint:"stdio 工具在部署环境中启动,请确保命令和依赖可用。",addTool:"添加 MCP 工具"},resources:{unnamedAgentCenter:"未命名智能体中心",unnamedKnowledgeBase:"未命名知识库",unnamedMemory:"未命名记忆库",loadError:"加载失败",loadingAgentCenters:"正在加载智能体中心…",agentCentersLoaded:"已加载 {{count}} 个智能体中心",noAgentCenters:"暂无智能体中心",noMatchingAgentCenters:"没有匹配的智能体中心",searchAgentKitCenter:"搜索 AgentKit 智能体中心",searchNameOrId:"搜索名称或 ID",selectAgentCenter:"选择智能体中心",selectAgentKitCenter:"选择 AgentKit 智能体中心",selectedAgentCenter:"已选智能体中心",agentKitCenter:"AgentKit 智能体中心",refreshAgentCenters:"刷新智能体中心",knowledgeBaseList:"知识库列表",knowledgeBasePlaceholder:"选择知识库",loadingKnowledgeBases:"正在加载知识库…",knowledgeBasesLoaded:"已加载 {{count}} 个知识库",noKnowledgeBases:"暂无知识库",noMatchingKnowledgeBases:"没有匹配的知识库",searchKnowledgeBase:"搜索知识库",selectKnowledgeBase:"选择知识库",refreshKnowledgeBases:"刷新知识库",memoryList:"记忆库列表",memoryPlaceholder:"选择记忆库",loadingMemories:"正在加载记忆库…",memoriesLoaded:"已加载 {{count}} 个记忆库",noMemories:"暂无记忆库",noMatchingMemories:"没有匹配的记忆库",searchMemory:"搜索记忆库",selectMemory:"选择记忆库",refreshMemories:"刷新记忆库"},env:{noAdditionalParameters:"此后端无需额外运行参数。",invalidJson:"请输入有效的 JSON。",helpAriaLabel:"{{label}}说明:{{help}}",openOpenViking:"打开 OpenViking {{label}}",valuePlaceholder:"请输入参数值",openVikingIndex:"OpenViking 资源索引",openVikingIndexHelp:"默认值:留空;生成项目时使用 Agent 名自动生成,例如 my_agent_kb。未配置 DATABASE_OPENVIKING_TARGET_URI 时,默认 URI 拼接为 viking://user/{知识库归属 ID,未填则 default}/resources/{资源索引}/;如果填写了 DATABASE_OPENVIKING_TARGET_URI,则直接使用该完整 URI。",openVikingIndexAriaLabel:"OpenViking 资源索引说明:{{help}}"},deployment:{vpcRequired:"使用 VPC 网络时,请填写 VPC ID。",apiKeyRequired:"请先选择模型使用的 API Key。",invalidEnvName:"环境变量名称不合法:{{key}}",requiredEnv:"{{name}}:请填写必填环境变量",generatingConfiguration:"正在生成部署配置",runtimeNameExists:"Runtime 名称已存在,请修改后重试。",preparing:"准备部署",complete:"部署完成",failed:"部署失败",updateAndPublish:"更新并发布",stages:{build:"构建镜像",deploy:"部署 Runtime",publish:"发布服务",running:"部署中"}},publish:{generating:"正在生成发布配置",validating:"校验 Agent 结构并准备部署快照…"}},qbe={presets:{support:{name:"客服助手",description:"7×24 在线答疑,结合知识库与历史对话,稳定、礼貌地解决用户问题。",instruction:"你是一名专业、耐心的客服助手。请始终保持礼貌、友好的语气,优先依据知识库中的资料回答用户问题;当资料不足以确定答案时,如实告知用户并主动引导其提供更多信息,切勿编造。回答尽量简洁、分点清晰,必要时给出操作步骤。",subagents:{}},analyst:{name:"数据分析师",description:"运行代码完成统计与可视化,开启链路追踪,分析过程可观测、可复现。",instruction:"你是一名严谨的数据分析师。面对数据问题时,先厘清分析目标与口径,再通过编写并运行代码完成清洗、统计与可视化。每一步都要说明你的假设与方法,给出结论时附上关键数据支撑,并指出潜在的偏差与局限。",subagents:{}},translator:{name:"翻译助手",description:"中英互译,忠实、通顺、地道,保留原文语气与专业术语。",instruction:"你是一名专业的翻译助手,精通中英互译。请在忠实于原文含义的前提下,使译文自然、地道、符合目标语言表达习惯;保留专有名词与专业术语的准确性,并尽量贴合原文的语气与风格。仅输出译文,除非用户额外要求解释。",subagents:{}},coder:{name:"代码助手",description:"编写、调试与重构代码,可运行代码验证结果,给出清晰可维护的实现。",instruction:"你是一名资深软件工程师。请根据需求编写正确、清晰、可维护的代码,遵循目标语言的惯用风格与最佳实践。在不确定时通过运行代码验证你的实现,给出关键的边界条件与测试思路,并对复杂逻辑附上简要注释。",subagents:{}},researcher:{name:"研究员",description:"联网检索一手资料,结合知识库与长期记忆,输出有据可查的研究结论。",instruction:"你是一名严谨的研究员。面对研究问题时,先拆解关键子问题,再通过联网检索收集多个一手、可信的来源,交叉验证后再下结论。结论需注明出处与不确定性,区分事实与推断,避免以偏概全。",subagents:{}},"research-team":{name:"多智能体研究团队",description:"由检索员、分析员、撰写员协作的研究编排,分工完成端到端调研报告。",instruction:"你是一支研究团队的总协调者。负责拆解用户的研究任务,将检索、分析、撰写分别委派给对应的子 Agent,汇总各子 Agent 的产出,把控整体质量,最终输出结构清晰、有据可查的研究报告。",subagents:{0:{name:"检索员",description:"联网搜集与课题相关的一手资料与数据。",instruction:"你是研究团队中的检索员。根据课题联网检索多个可信来源,整理出关键事实、数据与原文出处,交付给分析员,不做主观结论。"},1:{name:"分析员",description:"对检索到的材料做交叉验证与归纳分析。",instruction:"你是研究团队中的分析员。对检索员提供的材料做交叉验证、归纳与对比,提炼洞见、识别矛盾与不确定性,形成结构化的分析要点。"},2:{name:"撰写员",description:"将分析结论组织为结构清晰、引用规范的报告。",instruction:"你是研究团队中的撰写员。把分析员的要点组织成结构清晰、语言通顺、引用规范的研究报告,确保每个结论都能追溯到来源。"}}}},tags:{tools:"工具",memory:"记忆",knowledgeBase:"知识库",tracing:"观测",subagents:"子 Agent {{count}}"},gallery:{title:"从模板新建",subtitle:"选择一个预制 Agent 模板,按需微调后即可创建。"},detail:{back:"返回模板列表",name:"名称",systemPrompt:"系统提示词",model:"模型",tools:"工具",memory:"记忆",knowledgeBase:"知识库",tracing:"观测追踪",subagents:"子 Agent({{count}})",create:"使用此模板创建",shortTermMemory:"短期",longTermMemory:"长期"}},Wbe={checkingExpiry:"确认有效期中",waitingRecovery:"等待恢复",listFailed:"读取项目列表失败",recoveryFailed:"工作区恢复失败,请重试",operationFailed:"项目操作失败,请重试",title:"代码项目",back:"返回代码项目",restart:"本开发环境将在 {{countdown}} 后重启,请随时保存数据",expiresAt:"有效期至 {{date}}",exitFullscreen:"退出全屏",fullscreen:"全屏",exitFullscreenHint:"退出全屏(Esc)",recovering:"正在恢复工作区,完成后将自动返回项目",retry:"重试连接",search:"搜索代码项目",newTitle:"新建代码项目",new:"新建项目",readingStats:"正在读取项目统计",createdAt:"创建时间",opening:"正在打开",unknownCreatedAt:"创建时间未知",open:"打开项目",empty:"没有匹配的代码项目",close:"关闭新建项目",name:"项目名称",placeholder:"例如 my-agent",nameHelp:"以英文字母开头,可包含字母、数字、下划线和连字符,最多 64 个字符",cancel:"取消",create:"创建项目",files_one:"{{count}} 个文件",files_other:"{{count}} 个文件",directories_one:"{{count}} 个目录",directories_other:"{{count}} 个目录",separator:","},Kbe={enabled:"已启用",disabled:"已禁用",unknownStatus:"状态未知",allPermissions:"全部权限",customPermissions:"自定义权限",unknownPermissions:"权限未知",unnamed:"未命名 API Key",search:"搜索名称、状态或权限",noMatches:"没有匹配的 API Key",noModelPermission:"当前 API Key 无权限",modelAvailable:"可用",permissionState:{Available:"可用于对话",Shutdown:"已下线",VideoGeneration:"视频生成模型",Unsupported:"不支持作为对话模型",NotActivated:"尚未开通",Unknown:"未获取到模型状态"}},Gbe={common:jbe,yaml:Nbe,validation:Rbe,defaults:Ibe,helpers:Pbe,intelligentDeployment:Dbe,codePackage:Mbe,buildCanvas:Lbe,intelligent:$be,projectLibrary:Fbe,modePicker:Bbe,promptEditor:Ube,skills:Qbe,workflow:zbe,workbench:Vbe,traditional:Hbe,template:qbe,workspace:Wbe,modelApiKey:Kbe},nQe=Object.freeze(Object.defineProperty({__proto__:null,buildCanvas:Lbe,codePackage:Mbe,common:jbe,default:Gbe,defaults:Ibe,helpers:Pbe,intelligent:$be,intelligentDeployment:Dbe,modePicker:Bbe,modelApiKey:Kbe,projectLibrary:Fbe,promptEditor:Ube,skills:Qbe,template:qbe,traditional:Hbe,validation:Rbe,workbench:Vbe,workflow:zbe,workspace:Wbe,yaml:Nbe},Symbol.toStringTag,{value:"Module"})),Xbe={backToList:"返回定时任务列表",cancel:"取消",cancelQueue:"取消排队",cancelQueueFirst:"请先取消排队",cancelling:"取消中…",closeDrawer:"关闭抽屉",collapse:"收起",connectingRuntime:"正在连接 Runtime…",createScheduledTask:"创建定时任务",createTask:"创建任务",delete:"删除",deleteTask:"删除任务",edit:"编辑",enable:"启用",expand:"展开",pause:"暂停",refresh:"刷新",refreshHistory:"刷新执行历史",rerun:"重新执行",retry:"重试",runNow:"立即执行",saveChanges:"保存更改",saving:"保存中…",stop:"终止执行",stopRun:"终止本次执行",stopRunFirst:"请先终止当前执行",stopping:"终止中…",viewDetails:"查看详情"},Ybe={cancelDescription:"本次 Session 将被取消,后续计划不会暂停。",cancelTitle:"终止本次执行?",deleteDescription:"“{{name}}”及其全部执行历史将被永久删除。",deleteTitle:"删除定时任务?"},Zbe={configuration:"任务配置",nextRun:"下次执行",pageLabel:"定时任务详情",region:"地域",runtime:"运行时",status:"任务状态"},Jbe={createTitle:"创建定时任务",description:"每次触发都会为 Runtime Agent 创建独立 Session。",editTitle:"编辑定时任务"},eye={minutesSeconds:"{{minutes}} 分 {{seconds}} 秒",seconds:"{{count}} 秒"},tye={cronExpression:"Cron 表达式",cronHelp:"依次填写分钟、小时、日期、月份、星期。",dailyTime:"每天执行时间",enableAfterCreate:"创建后启用",enableHelp:"启用后会从下一个计划时间开始执行。",name:"任务名称",namePlaceholder:"例如:每日生成运营摘要",noRuntime:"暂无可用 Runtime",prompt:"执行文本",promptPlaceholder:"输入每次执行时发送给 Agent 的固定文本",runAt:"执行时间",runtimeAgent:"运行时智能体",runtimeHelp:"任务始终跟随该 Runtime 当前生效版本。",runtimePlaceholder:"选择 Runtime Agent",schedule:"执行计划",scheduleType:"执行计划类型",timezone:"时区",weekday:"星期"},nye={all:"全部"},iye={description:"每次运行均使用独立 Session,结果与错误会永久保留。",duration:"耗时 {{duration}}",emptyDescription:"任务触发或立即执行后,记录会显示在这里。",emptyTitle:"暂无执行记录",errorDetails:"错误详情",finalAnswer:"最终回答",loadFailed:"无法加载执行历史",loadFailedDescription:"请检查 Studio 服务后重试。",session:"会话",title:"执行历史"},rye={cancelRequested:"已提交终止请求。",created:"任务已创建。",deleted:"任务及其执行历史已删除。",enabled:"任务已启用。",paused:"任务已暂停。",queued:"任务已排队,将在一分钟内开始执行。",requeued:"任务已重新排队,将在一分钟内开始执行。",updated:"任务已更新。"},sye={filterLabel:"定时任务状态筛选",listLabel:"定时任务列表",loadFailed:"无法加载定时任务",loadFailedDescription:"请检查 Studio 服务后重试。",title:"定时任务"},oye={cron:"Cron {{cron}}{{zone}}",daily:"每天 {{time}}{{zone}}",once:"一次 · {{date}}{{zone}}",weekly:"{{weekday}} {{time}}{{zone}}"},aye={daily:"每天",once:"一次性",weekly:"每周"},lye={cancelled:"已取消",enabled:"已启用",failed:"失败",notRun:"尚未执行",paused:"已暂停",pending:"准备中",queued:"已排队",retrying:"自动重试中",running:"执行中",skipped:"已跳过",success:"成功"},cye={cronFields:"Cron 表达式需要包含 5 个字段,例如 0 9 * * *。",nameRequired:"请输入任务名称。",promptRequired:"请输入每次执行时发送给 Agent 的文本。",runtimeAppMissing:"Runtime Agent 未返回可调用的 appName,请确认 Runtime 已就绪且版本兼容。",runtimeRequired:"请选择可用的 Runtime Agent。",timeRequired:"请选择执行时间。"},uye={friday:"周五",monday:"周一",saturday:"周六",sunday:"周日",thursday:"周四",tuesday:"周二",wednesday:"周三"},iQe={actions:Xbe,confirm:Ybe,detail:Zbe,drawer:Jbe,duration:eye,fields:tye,filters:nye,history:iye,notices:rye,page:sye,schedule:oye,scheduleTypes:aye,status:lye,validation:cye,weekdays:uye},rQe=Object.freeze(Object.defineProperty({__proto__:null,actions:Xbe,confirm:Ybe,default:iQe,detail:Zbe,drawer:Jbe,duration:eye,fields:tye,filters:nye,history:iye,notices:rye,page:sye,schedule:oye,scheduleTypes:aye,status:lye,validation:cye,weekdays:uye},Symbol.toStringTag,{value:"Module"})),dye="快速创建 Agent",fye="Agent 类型",hye="关闭",pye="部署",mye="预览配置",gye="已发起配置包下载",bye="下载失败,请重试",yye="有 {{count}} 处配置需要修改",vye="自定义",xye="自定义{{field}}",wye="输入自定义值",Oye="该模型未声明推理强度,使用服务端设置",kye="请先为该提供方添加模型",Sye="请先选择提供方",Eye="请选择",Cye="可选",Tye="默认模型、Agent 预设和权限用于新会话;预设需要存在于部署的 Harness 中",Aye="仅填写环境变量名称,实际密钥由部署环境提供",_ye="read-only 为只读,workspace-write 可写工作区,danger-full-access 允许完整访问且不请求确认",jye="allowedModels 是子 Agent 可选择的模型列表,启用后至少填写一组提供方和模型",Nye="添加自定义模型服务,填写它的端点、协议和模型 ID,支持火山引擎和 BytePlus 等兼容服务",Rye="当前覆盖常用原生设置,其他插件参数与预设文件尚未接入",Iye="查看原生配置文档",Pye="模型提供方 {{index}}",Dye="模型 {{index}}",Mye="添加模型提供方",Lye="移除提供方 {{index}}",$ye="添加模型",Fye="移除模型 {{index}}",Bye="添加可选模型",Uye="移除可选模型 {{index}}",Qye="移除",zye="填写服务端的模型 ID",Vye={provider:"提供方 {{index}}",model:"模型 {{index}}"},Hye={defaults:"会话默认设置",deepseek:"DeepSeek 模型服务",providers:"自定义模型提供方",shell:"命令执行",loop:"工具调用",subagents:"子 Agent 模型选择",search:"DeepSeek 网络搜索"},qye={id:"提供方 ID",displayName:"显示名称",baseURL:"服务地址",api:"接口协议",apiKeyEnv:"密钥环境变量"},Wye={id:"例如 company-models",displayName:"可选,默认使用提供方 ID",baseURL:"https://…/v1",api:"选择接口协议",apiKeyEnv:"例如 MODEL_API_KEY"},Kye={id:"模型 ID",name:"显示名称",contextWindow:"上下文容量",maxTokens:"最大输出容量"},Gye={positive:"请输入大于 0 的数值",integer:"请输入有效的正整数",env:"请输入环境变量名,只能包含字母、数字和下划线,且不能以数字开头",url:"请输入 HTTP 或 HTTPS 地址,不要在地址中包含凭据",option:"请选择受支持的原生选项",required:"请补全此项",duplicate:"该 ID 或模型组合已存在",providerId:"以小写字母开头,可包含小写字母、数字、点、下划线和连字符,不能使用保留 ID",routes:"请至少填写一组完整的提供方和模型",modelPair:"请填写该自定义提供方下的模型 ID",unknownProvider:"请先添加该自定义模型提供方",unknownModel:"请填写该提供方下已配置的模型 ID",timer:"请输入大于 0 且不超过 2147483647 的毫秒数"},Xye={"agent-default-model_provider":"默认提供方","agent-default-model_model":"默认模型","agent-default-model_reasoningEffort":"默认推理强度","agent-presets_default":"默认 Agent 预设",permission_defaultPreset:"默认权限预设","llm-deepseek_apiKeyEnv":"密钥环境变量","llm-deepseek_baseURL":"服务地址","llm-deepseek_thinking":"思考模式","llm-deepseek_reasoningEffort":"推理强度","llm-deepseek_maxTokens":"每次请求的输出上限","llm-deepseek_defaultContextWindow":"默认上下文容量","llm-deepseek_streamIdleTimeoutMs":"流式空闲超时(毫秒)",bash_timeoutMs:"默认执行超时(毫秒)",bash_maxTimeoutMs:"最大执行超时(毫秒)",bash_maxOutputBytes:"输出上限(字节)","agent-loop_maxParallelToolCalls":"并行工具调用上限","subagent-model-selection_enabled":"启用模型选择","web-search-deepseek_apiKeyEnv":"密钥环境变量","web-search-deepseek_baseURL":"搜索服务地址","web-search-deepseek_model":"搜索模型","web-search-deepseek_apiVersion":"接口版本","web-search-deepseek_maxTokens":"搜索输出上限","web-search-deepseek_maxUses":"搜索次数上限"},Yye="取消",Zye="返回创建方式",Jye="DeepSeek Harness 配置",sQe={title:dye,agentType:fye,close:hye,continue:"继续配置",deploy:pye,preview:mye,export:"导出配置",downloaded:gye,downloadFailed:bye,validationSummary:yye,customValue:vye,customField:xye,enterCustomValue:wye,reasoningUnavailable:Oye,modelsUnavailable:kye,selectProviderFirst:Sye,selectOption:Eye,optional:Cye,defaultsHelp:Tye,credentialHelp:Aye,permissionHelp:_ye,routesHelp:jye,providersHelp:Nye,coverage:Rye,source:Iye,provider:Pye,model:Dye,addProvider:Mye,removeProvider:Lye,addModel:$ye,removeModel:Fye,addRoute:Bye,removeRoute:Uye,remove:Qye,modelIdPlaceholder:zye,route:Vye,sections:Hye,providerFields:qye,providerPlaceholders:Wye,modelFields:Kye,errors:Gye,fields:Xye,cancel:Yye,back:Zye,pageTitle:Jye},oQe=Object.freeze(Object.defineProperty({__proto__:null,addModel:$ye,addProvider:Mye,addRoute:Bye,agentType:fye,back:Zye,cancel:Yye,close:hye,coverage:Rye,credentialHelp:Aye,customField:xye,customValue:vye,default:sQe,defaultsHelp:Tye,deploy:pye,downloadFailed:bye,downloaded:gye,enterCustomValue:wye,errors:Gye,fields:Xye,model:Dye,modelFields:Kye,modelIdPlaceholder:zye,modelsUnavailable:kye,optional:Cye,pageTitle:Jye,permissionHelp:_ye,preview:mye,provider:Pye,providerFields:qye,providerPlaceholders:Wye,providersHelp:Nye,reasoningUnavailable:Oye,remove:Qye,removeModel:Fye,removeProvider:Lye,removeRoute:Uye,route:Vye,routesHelp:jye,sections:Hye,selectOption:Eye,selectProviderFirst:Sye,source:Iye,title:dye,validationSummary:yye},Symbol.toStringTag,{value:"Module"})),e0e="问题反馈",t0e="问题描述",n0e="常见问题",i0e="取消",r0e="完成",s0e="提交反馈",o0e="正在上报…",a0e={title:"上报成功,感谢您的反馈",description:"AgentKit 团队会尽快查看您提交的问题。"},l0e={close:"关闭问题反馈",intro:"请选择遇到的问题,也可以补充具体表现。",privacy:"您的对话数据将会上报到 AgentKit 团队,请注意隐私保护。",descriptionPlaceholder:"请描述问题发生时的表现(选填)",issues:{slow:"执行速度慢",crash:"运行崩溃",incorrect:"结果不准确",tool_error:"工具调用失败",other:"其他问题"}},c0e={description:"告诉我们您在使用 AgentKit Studio 时遇到的问题。",module:"所属模块",modules:{conversation:"对话",agents:"智能体",applications:"自动化",search:"搜索",other:"其他"},commonIssuesMultiple:"常见问题(可多选)",issueTypes:"问题类型",issues:{page_slow:"页面加载慢",feature_unavailable:"功能无法使用",display_error:"页面显示异常",no_response:"操作无响应",other:"其他问题"},descriptionPlaceholder:"请描述问题发生时的页面、操作和表现",quickAdd:"快捷补充",suggestionsLabel:"问题描述推荐",suggestions:{noResponse:"点击后没有反应",loading:"页面一直处于加载状态",incomplete:"部分内容显示不完整",error:"操作后出现错误提示"},privacy:"您的数据将会上报到 AgentKit 团队,请注意隐私保护。"},aQe={title:e0e,descriptionLabel:t0e,commonIssues:n0e,cancel:i0e,done:r0e,submit:s0e,submitting:o0e,success:a0e,dialog:l0e,page:c0e},lQe=Object.freeze(Object.defineProperty({__proto__:null,cancel:i0e,commonIssues:n0e,default:aQe,descriptionLabel:t0e,dialog:l0e,done:r0e,page:c0e,submit:s0e,submitting:o0e,success:a0e,title:e0e},Symbol.toStringTag,{value:"Module"})),u0e={back:"返回",close:"关闭"},d0e={title:"优化迁移项目",closeAria:"关闭优化窗口"},f0e={title:"已迁移项目",description:"管理迁移后的源码版本,也可以选择任一版本继续优化。",libraryTitle:"项目与版本",libraryDescription:"查看、下载、部署或对比源码版本,也可以基于任一版本继续优化。",emptyTitle:"还没有已迁移的项目",emptyDescription:"迁移完成后,源码会自动保存在这里。"},h0e={langchain:"LangChain",langgraph:"LangGraph",adk:"Google ADK",strands:"Strands",agentcore:"AgentCore",dify:"Dify",any:"Any(通用迁移)"},p0e={awaitingUpload:"待上传",analyzing:"分析中",needsInput:"待补充",analysisReady:"待确认",migrating:"迁移中",validating:"校验中",packaging:"打包中",succeeded:"已完成",succeededWithWarnings:"已完成,有提示",partial:"部分完成",failed:"失败",cancelled:"已终止",expired:"已过期"},m0e={evaluationPending:"待评测",evaluationRunning:"评测中",waitingDataset:"待保存评测用例",waitingEnvironment:"待补充环境变量",evaluationFailed:"迁移完成,评测未完成",evaluationBlocked:"迁移完成,评测待处理",evaluationCancelled:"迁移完成,评测已取消",resultUnavailable:"结果不可用",environmentExpired:"环境已过期"},g0e={partialReady:"迁移产物已生成,但交付不完整,请查看迁移提示。",readyWithWarnings:"迁移产物已生成,请查看迁移提示。",ready:"迁移产物已生成。"},b0e={passed:"产物校验通过",failed:"产物校验未通过",degraded:"产物校验未完成"},y0e={session:"创建迁移环境",upload:"上传项目",analysis:"分析项目"},v0e={agentNameRequired:"请输入 Agent 名称",agentNameInvalid:"Agent 名称必须为 1-63 位,只能包含小写字母、数字和连字符,且必须以字母或数字开头和结尾"},x0e={seconds:"{{seconds}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒"},w0e={savedUnaffected:"已保存项目不受影响",savingUnaffected:"源码正在保存,完成后不受环境期限影响",activeDetail:"到期后任务记录和临时产物将无法访问",oneHour:"临时迁移环境保留 1 小时",ended:"临时迁移环境已结束",savedAvailable:"已保存项目仍可查看、下载、部署或优化",unavailable:"任务记录和临时产物已无法访问",countdown:"临时迁移环境将在 {{minutes}} 分 {{seconds}} 秒后结束",expiredSavedMessage:"临时迁移环境已结束,已保存项目不受影响。",expiredMessage:"临时迁移环境已结束,任务记录和临时产物无法继续访问。"},O0e={recommended:"建议迁移方式",scope:"迁移范围",excluded:"不在本次范围",viewEvidence:"查看分析证据",viewAssumptions:"查看关键假设",viewSourceEvidence:"查看源码证据"},k0e={ariaLabel:"Codex 执行动态",title:"Codex 执行动态",startingAnalysis:"Codex 正在开始分析…",startingMigration:"Codex 正在开始迁移…",loadError:"暂时无法读取 Codex 执行动态,不影响当前任务。"},S0e={title:"迁移产物",fileTooLarge:"该文件超过 2 MiB,请下载完整产物后查看。",unsupportedPreview:"该文件不支持在线预览,请下载完整产物后查看。",filesAria:"迁移产物文件",searchAria:"搜索产物文件",searchPlaceholder:"搜索文件",limit:"仅展示前 {{count}} 项,请搜索具体文件。",noSelection:"未选择文件",noPreview:"暂无可预览文件。",loadingFile:"正在读取产物文件…",startupFile:"启动文件",fileCountLabel:"文件数",saved:"源码已保存,可继续查看、下载、部署或优化。",saving:"产物已生成,正在保存源码版本。",deployReady:"产物可预览、下载和部署,正在等待源码保存状态。",deployUnavailable:"产物可预览和下载,但当前交付状态不支持部署。",viewProjects:"查看已迁移项目",downloading:"下载中…",downloadZip:"下载 ZIP",deployTitle:"部署迁移产物",deployUnavailableTitle:"当前交付状态不支持部署",deployRuntime:"部署到 Runtime",fileCount:"{{count}} 个文件",startup:"启动文件 {{module}}",loading:"正在读取迁移产物…"},E0e={retiring:"即将下线",currentDefault:"当前默认模型",loadError:"加载模型列表失败",label:"模型",placeholder:"选择模型"},C0e={zipOnly:"请选择 .zip 格式的本地项目文件。",invalidName:"ZIP 文件名无效,请重命名后重新选择。",tooLarge:"项目 ZIP 不能超过 {{size}}。",empty:"项目 ZIP 不能为空。",removeAria:"移除项目 ZIP",reselectPrompt:"重新选择项目 ZIP",selectPrompt:"选择或拖入本地项目 ZIP",reselect:"重新选择",selectZip:"选择 ZIP",continue:"继续上传",start:"上传并分析",inputAria:"选择本地项目 ZIP",retention:"临时迁移环境从创建完成起保留 1 小时;保存成功的源码版本不受影响。",uploading:"上传中…",sizeHint:"支持项目 ZIP,最大 {{size}}"},T0e={requiredPlaceholder:"请输入 {{key}}",optionalPlaceholder:"可选:{{key}}",notReady:"迁移产物尚未准备完成。",back:"返回迁移结果"},A0e={backToAddAgent:"返回添加 Agent",title:"从存量迁移",newMigration:"新建迁移",recent:"最近迁移",loadingSessions:"正在读取迁移会话…",noSessions:"暂无迁移会话",heading:"迁移存量 Agent 项目",intro:"上传本地项目 ZIP,Codex 将先进行只读分析,再由你确认迁移方式。",backToHome:"迁移首页",navigation:"迁移导航",showMore:"查看更多",showLess:"收起",projectName:"项目名称",status:"状态",createdAt:"创建时间",actions:"操作",openTask:"查看迁移 {{name}}",continueTask:"继续",viewTask:"查看"},_0e={stop:"终止迁移",stopping:"正在终止…",cancel:"取消",reload:"重新读取",refreshStatus:"刷新状态"},j0e={unavailable:"迁移能力暂不可用",defaultReason:"Dev Sandbox 暂不可用,请联系管理员检查配置。"},N0e={creatingSandbox:"正在创建 Dev Sandbox",initializing:"正在初始化迁移工作目录,并检查 AgentKit CLI、Codex 和迁移能力。环境就绪后将自动上传项目。",elapsed:"已等待 {{duration}}",uploadThenAnalyze:"ZIP 上传完成后将自动开始只读分析。",analyzing:"Codex 正在识别框架、入口和迁移边界,不会执行实际迁移。",migrationLocked:"迁移执行中不能修改附件或迁移方式。你可以等待当前任务结束,或主动终止。",analysisPaused:"只读分析已暂停。请仅回答下面列出的问题,提交后会在同一迁移环境中重新分析,不会开始实际迁移。",analysisComplete:"只读分析已完成。请检查建议,并确认最终迁移方式。",awaitingUpload:"迁移环境已创建,请重新选择本地 ZIP 继续上传。",expiredTitle:"迁移环境已过期",expiredDescription:"迁移内容和产物已无法预览、下载或部署。如已完成 Runtime 部署,可返回智能体页面继续使用。",unsupportedTitle:"当前 ZIP 暂时无法迁移",unsupportedHint:"请按提示整理项目后,新建迁移并重新上传。",failedTitle:"迁移未完成",cancelled:"当前迁移已终止。你可以新建迁移并重新上传项目。"},R0e={ariaLabel:"补充项目分析信息",title:"补充分析所需信息",description:"附件保持锁定,提交后仅继续只读分析",submitting:"正在继续分析…",submit:"提交并继续分析"},I0e={ariaLabel:"确认迁移方式",title:"确认迁移方式",description:"确认后才会执行实际迁移",framework:"迁移方式",frameworkPlaceholder:"选择迁移方式",agentName:"Agent 名称",entry:"项目入口",entryPlaceholder:"选择项目入口",entryExample:"例如 agent.py:agent",consent:"点击“确认并开始迁移”即确认上述迁移范围、排除项和关键假设。",starting:"正在启动迁移…",start:"确认并开始迁移"},P0e={setup:{title:"迁移效果评测",description:"迁移完成后自动执行评测用例。",on:"已开启",off:"未开启",unavailable:"当前环境暂不支持迁移效果评测。",casesTitle:"评测用例",casesDescription:"至少添加一个用例。期望结果和评测标准可选。",configuredSummary:"{{count}} 个用例 · {{preset}} · {{dimensions}}",incompleteSummary:"{{count}} 个用例待填写 · {{preset}} · {{dimensions}}",dimensionSummary:"{{count}} 个维度",editSettings:"编辑设置",viewSettings:"查看设置",lockedTitle:"评测用例",lockedDescription:"上传开始后不可修改。",closeAria:"关闭评测设置",done:"完成配置",close:"关闭"},tabs:{label:"迁移任务内容",migration:"迁移",evaluation:"效果评测",waitingMigration:"等待迁移",waitingConfiguration:"待配置",running:"评测中",completed:"已完成",issue:"需处理"},bulk:{open:"批量粘贴",label:"每行输入一个用例",placeholder:`帮我查询今天的订单状态
-把结果整理成三点`,preview:"将添加 {{count}} 个用例",confirm:"添加用例"},case:{title:"用例 {{index}}",add:"添加用例",moveUp:"上移用例 {{index}}",moveDown:"下移用例 {{index}}",copy:"复制",delete:"删除",userInput:"用户输入",userInputPlaceholder:"例如:请帮我查询今天的订单状态",expectedOutcome:"期望结果(可选)",expectedOutcomePlaceholder:"描述希望 Agent 完成什么,不要求逐字一致",criteria:"必须满足的要求(可选)",addCriterion:"添加要求",criterionLabel:"必须满足的要求 {{index}}",criterionPlaceholder:"例如:必须包含订单号和当前状态",removeCriterion:"删除要求 {{index}}"},advanced:{title:"高级设置",standard:"标准评测",standardDescription:"默认包含语义一致性、输出约束、工作流与工具一致性 3 个维度,适合多数迁移。",custom:"自定义维度",customDescription:"按业务风险选择一个或多个评测维度。",lockedDescription:"项目开始上传后,评测方式和维度不再修改。"},dimension:{semantic_fidelity:"语义一致性",output_contract:"输出约束",workflow_tool_fidelity:"工作流与工具一致性",context_memory_fidelity:"上下文与记忆一致性",boundary_error_fidelity:"边界与异常一致性",safety_refusal_fidelity:"安全与拒答一致性"},dimensionDescription:{semantic_fidelity:"检查意图理解、结论和关键事实是否保持一致。",output_contract:"检查字段、结构、语言和格式约束是否保持。",workflow_tool_fidelity:"检查可观察的工作流分支和工具行为是否保持。",context_memory_fidelity:"检查可验证的多轮上下文和记忆行为。",boundary_error_fidelity:"检查无效输入、信息缺失和依赖失败时的行为。",safety_refusal_fidelity:"检查已有授权、拒答和敏感信息边界是否保持。"},validation:{caseCount:"请保留 1–{{count}} 个用例。",dimensionRequired:"请至少选择一个评测维度。",userInputRequired:"请输入用例内容。",userInputBytes:"单个用例不能超过 32 KiB。",expectedOutcomeBytes:"期望结果不能超过 16 KiB。",criteriaCount:"单个用例最多包含 {{count}} 条要求。",criterionRequired:"要求不能为空。",criterionBytes:"单条要求不能超过 2 KiB。",datasetBytes:"全部评测用例不能超过 10 MiB。"},dataset:{invalidLockResponse:"服务未确认评测用例已保存,请重试。",loadingSettings:"正在读取评测设置…",loadSettingsFailed:"评测设置读取失败。",retryLoadSettings:"重新读取",missing:"未找到已保存的评测用例,请重新填写并保存。",saveWarning:"评测用例暂未保存,不影响迁移。",retrySave:"重新保存评测用例",saving:"正在保存…"},state:{disabled:"未开启评测",waiting_dataset:"等待填写评测用例",pending:"迁移完成后自动开始评测",preparing:"正在准备评测环境…",waiting_environment:"需要补充运行所需的环境变量",deploying:"正在部署临时 Runtime…",executing:"正在执行评测用例…",judging:"正在执行评测分析…",aggregating:"正在汇总评测结果…",completed:"评测已完成",failed:"评测未完成",blocked:"评测需要处理后才能继续",cancelled:"评测已取消"},progress:{label:"迁移与迁移效果评测进度",migration:"迁移",evaluation:"迁移效果评测",notStarted:"未开始",inProgress:"进行中",completed:"完成",waitingConfiguration:"等待配置",issue:"有问题"},environment:{description:"填写临时 Runtime 所需的环境变量。",security:"仅用于本次评测。",optional:"可选",submit:"提交并继续评测",submitting:"正在提交…"},execution:{preparing:"准备评测",preparingDetail:"校验迁移产物和 {{count}} 个评测用例",deploying:"启动 Runtime",deployingDetail:"准备 {{runtime}}",runtimeFallback:"隔离运行环境",executing:"执行用例",executingDetail:"执行 {{count}} 个用例并记录输出",judging:"执行评测分析",judgingDetail:"评测 {{cases}} 个用例 · {{dimensions}} 个维度",aggregating:"生成评测报告",aggregatingDetail:"汇总评分与证据,生成 HTML 报告",waiting:"等待中",running:"执行中",failed:"失败",complete:"已完成"},result:{title:"执行进度",attempt:"第 {{attempt}} 次评测",pending:"等待迁移完成",retry:"重新评测",retrying:"正在重试…",failureStage:"失败阶段",errorCode:"错误码",taskId:"任务 ID",diagnosticAttempt:"评测轮次",runtime:"Runtime",errorDetails:"错误详情",diagnosticField:"{{label}}:{{value}}",diagnosticHeading:"{{label}}:",loadingReport:"正在读取评测报告…",reportTitle:"HTML 评测报告",reportHtmlDescription:"查看或下载 HTML 报告。",viewReport:"查看报告",reportDrawerDescription:"评分、差异与证据",closeReport:"关闭",closeReportAria:"关闭评测报告",reportPreviewTitle:"迁移效果评测报告预览",reportSummary:"评测摘要",reportVersion:"评测集 {{version}} · Prompt v{{prompt}}",downloadReport:"下载完整报告",downloadingReport:"正在下载…",overallScore:"综合一致性",scoreScale:"0–100;证据不足时显示 N/A",evidenceCoverage:"证据覆盖率",coverageDetail:"{{scored}} / {{total}} 个维度有证据",executionSuccess:"执行成功率",executionDetail:"{{succeeded}} / {{total}} 个用例完成",naCount:"N/A 数量",naDescription:"证据不足,不计入分数",gapDescription:"迁移差距说明",lowestScoringCases:"低分用例",executionFailures:"执行异常",criticalEvidence:"Critical 证据",limitations:"评测限制",viewEvidence:"查看 {{count}} 个用例的结果与证据",outputTruncated:"输出过长,已截断",executionState:{succeeded:"执行完成",failed:"执行异常"},severityLabel:"严重度:{{severity}}",severity:{none:"无",low:"低",medium:"中",high:"高",critical:"Critical",unknown:"未知"},evidenceSource:{user_reference:"期望结果",user_criteria:"填写的要求",source_contract:"源项目约束",observed_output:"实际输出",runtime_observation:"Runtime 原始数据",deterministic_assertion:"确定性断言"},listSeparator:"、"}},D0e={closeAria:"关闭错误提示",loadFailed:"无法读取迁移数据,请重试。",refreshFailed:"无法刷新迁移状态,请重试。"},M0e={title:"终止当前迁移?",description:"终止后,当前分析或迁移进程将停止,已执行的步骤不会继续。"},cQe={common:u0e,optimization:d0e,projects:f0e,framework:h0e,state:p0e,historyStatus:m0e,task:g0e,verification:b0e,transfer:y0e,validation:v0e,duration:x0e,expiry:w0e,analysis:O0e,activity:k0e,artifact:S0e,model:E0e,upload:C0e,deployment:T0e,workspace:A0e,actions:_0e,capability:j0e,conversation:N0e,questions:R0e,confirmation:I0e,evaluation:P0e,errors:D0e,stopDialog:M0e},uQe=Object.freeze(Object.defineProperty({__proto__:null,actions:_0e,activity:k0e,analysis:O0e,artifact:S0e,capability:j0e,common:u0e,confirmation:I0e,conversation:N0e,default:cQe,deployment:T0e,duration:x0e,errors:D0e,evaluation:P0e,expiry:w0e,framework:h0e,historyStatus:m0e,model:E0e,optimization:d0e,projects:f0e,questions:R0e,state:p0e,stopDialog:M0e,task:g0e,transfer:y0e,upload:C0e,validation:v0e,verification:b0e,workspace:A0e},Symbol.toStringTag,{value:"Module"})),L0e={loading:"加载中…",searchLabel:"搜索{{label}}",searchPlaceholder:"搜索{{label}}",retry:"重试",noMatches:"没有匹配项",noOptions:"暂无可选项",selection:"{{label}}:{{value}}"},$0e={badge:"焕然一新",view:"查看新特性",title:"本次更新",defaultNotes:{multiRegion:"多地域智能体:并行加载北京与上海 Runtime,列表下滑即可继续加载。",switchAgent:"会话内切换:在输入框旁选择智能体,并直接开启一段新会话。",visualCanvas:"可视化执行画布:通过横向画布查看多智能体结构,并支持全屏浏览。"}},F0e={label:"新会话模式",agent:"智能体",skill:"技能定制",video:"视频创作"},B0e={select:"选择新会话模式",agent:{label:"Agent",description:"与当前选择的 Agent 对话"},builtin:{label:"内置智能体",description:"使用平台提供的智能体"},codex:{label:"Codex 智能体",description:"在沙箱中执行任务"},deepseekHarness:{label:"DeepSeek Harness",description:"打开 DeepSeek Harness 工作区"},arkClaw:"ArkClaw",hermes:"Hermes 智能体",checking:"正在检查配置",notConfigured:"管理员未配置",unavailable:"暂不可用"},U0e={select:"选择智能体",typesLabel:"智能体类型",listLabel:"{{type}}列表",types:{agent:"智能体",general:"通用智能体",codex:"Codex 智能体",deepseekHarness:"DeepSeek Harness",openclaw:"OpenClaw 智能体",hermes:"Hermes 智能体"},loading:"正在加载智能体",reload:"重新加载",empty:"暂无{{type}}",emptyLocal:"暂无本地智能体",emptyGeneral:"暂无通用智能体",createHint:"请前往智能体页创建",localHint:"请检查当前 Studio 启动目录",waking:"正在唤醒",opening:"正在打开",connecting:"正在连接",loadingMore:"加载中",loadMore:"加载更多",runtimeTimeout:"加载智能体超时(15 秒),请检查网络或 Runtime 服务后重试",loadGeneral:"加载通用智能体",loadType:"加载 {{type}}",connectGeneral:"连接通用智能体",openLocal:"打开本地智能体",openType:"打开 {{type}}",wakingHint:"正在唤醒智能体,可能需要一些时间。"},Q0e={spaceAria:"技能空间",configuration:"技能定制配置",actions:{create:"技能生成",optimize:"技能优化"},selectAction:"选择技能定制方式",actionList:"技能定制方式",style:"风格",selectStyle:"选择风格",model:"模型",selectModel:"选择模型",styles:{concise:"简洁实用",strict:"严谨稳健",tutorial:"教程友好",automation:"自动化优先"},modelLoadFailed:"模型配置加载失败",spaceLoadFailed:"Skill Space 加载失败",skillLoadFailed:"Skill 加载失败",unnamedSpace:"未命名 Skill Space",space:"技能空间",select:"选择 Skill",selectAria:"选择 Skill:{{skill}}",loadingSpaces:"正在加载 Skill Space",reload:"重新加载",emptySpaces:"暂无 Skill Space",skillList:"{{space}} Skill 列表",loadingSkills:"正在加载 Skill",emptySkills:"暂无 Skill"},z0e={modes:{auto:"自动识别",text_to_video:"文生视频",reference_to_video:"参考素材生视频",video_editing:"视频编辑",video_extension:"视频续写",first_last_frame:"首尾帧生成"},taskNames:{auto:"视频生成",text_to_video:"文生视频",reference_to_video:"参考素材生视频",video_editing:"视频编辑",video_extension:"视频续写",first_last_frame:"首尾帧生成"},controls:{label:"视频创作配置",aspectRatio:"比例",selectAspectRatio:"选择比例",resolution:"清晰度",selectResolution:"选择清晰度",duration:"时长",durationShort:"{{count}} 秒",durationAria:"视频时长:{{count}} 秒",lastFrame:"尾帧",lastFrameHelper:"添加视频结束画面",assistImage:"辅助图片",referenceImage:"参考图片",assistImageHelper:"用于补充画面参考",imageHelper:"支持常见图片格式",referenceVideo:"参考视频",videoHelper:"支持常见视频格式",optional:"可选",replace:"更换",add:"添加",upload:"上传{{label}}",replaceFile:"更换{{label}}:{{name}}",removeFile:"移除{{label}} {{name}}",storageUnavailable:"管理员未配置持久化存储",loadingEnhancer:"正在加载增强模型",enhancerHint:"使用 {{model}} 模型进行意图识别和提示词增强",enhancerUnavailable:"增强模型不可用"},task:{title:"视频生成任务",closeAria:"关闭视频生成任务弹窗",progressAria:"视频生成进度",optimizedPrompt:"优化后的提示词",processingAria:"{{task}}处理进度",waitingAria:"{{status}},已等待{{elapsed}}",elapsed:"已等待 {{elapsed}}",previewAria:"生成结果预览",close:"关闭",download:"下载视频",retryOptimization:"重试提示词优化",retryGeneration:"重试视频生成",providerQueued:"等待模型调度",providerRunning:"模型生成中",providerSubmitting:"正在提交任务",queuedHint:"任务已提交,模型开始处理后状态会自动更新",runningHint:"这可能持续数分钟,完成后将在这里显示视频预览",backgroundHint:"可以关闭弹窗,任务会继续在后台运行",successHint:"视频已生成,可预览或下载",activationHint:"请先在模型控制台开通服务,再重试生成",retryHint:"修正问题后可重试当前步骤",steps:{optimizationFailed:"提示词优化失败",optimizationDone:"提示词优化完成",optimizationActive:"提示词优化中",generationDone:"{{task}}已完成",generationFailed:"{{task}}失败",generationQueued:"{{task}}排队中",generationRunning:"{{task}}生成中",generationActive:"{{task}}进行中",generationPending:"等待视频生成",generationComplete:"视频生成完成"},elapsedHours:"{{hours}}小时{{minutes}}分",elapsedMinutes:"{{minutes}}分{{seconds}}秒",elapsedSeconds:"{{seconds}}秒"}},V0e={compactSelect:L0e,featureNotice:$0e,workspace:F0e,mode:B0e,agentPicker:U0e,skill:Q0e,video:z0e},dQe=Object.freeze(Object.defineProperty({__proto__:null,agentPicker:U0e,compactSelect:L0e,default:V0e,featureNotice:$0e,mode:B0e,skill:Q0e,video:z0e,workspace:F0e},Symbol.toStringTag,{value:"Module"})),H0e="审核中心",q0e="审核资源类型",W0e="仅管理员可以访问审核中心",K0e="搜索申请名称、提交人或版本",G0e="审核状态",X0e="{{count}} 条待审核",Y0e="共 {{count}} 条申请",Z0e={skill:"技能",agent:"智能体"},J0e={all:"全部状态",pending:"待审核",approved:"已通过",returned:"已退回",approving:"发布中"},eve={application:"申请名称",submitter:"提交人",version:"版本",submittedAt:"提交时间",status:"状态",actions:"操作"},tve={details:"详情",detailsFor:"查看 {{name}} 的申请详情",approve:"通过",approveFor:"通过 {{name}} 的申请",return:"退回",returnFor:"退回 {{name}} 的申请",close:"关闭",backToDetails:"返回详情",confirmApprove:"确认通过",confirmReturn:"确认退回",clearFilters:"清除筛选",refresh:"刷新",cancel:"取消",resumeApproval:"继续发布"},nve={title:"暂无审核申请",description:"提交的审核申请会显示在这里",filteredTitle:"没有匹配的申请",filteredDescription:"试试其他关键词,或调整审核状态"},ive={title:"申请详情",sections:"申请详情内容",overview:"申请信息",files:"提交文件 · {{count}}",requestType:"申请类型",update:"版本更新",firstRelease:"首次发布",source:"来源",source_skill:"{{name}}的个人技能空间",source_agent:"{{name}}的开发环境",destination:"发布目标",destination_skill:"企业共享技能空间",destination_agent:"全员共享智能体",region:"区域",visibility:"发布后可见范围",shared:"全员可见",description:"功能说明",changes:"本次提交说明",example:"使用示例",history:"审核记录",submitted:"{{name}}提交申请",versionFixed:"仅审核本次提交的版本",instructions:"使用说明",filesTab:"提交文件",filesFailed:"加载提交文件失败",unknownAuthor:"未知申请人",reviewer:"审批人",reviewedAt:"审批时间",approved:"{{name}}通过申请",returned:"{{name}}退回申请",unknownReviewer:"未知审批人",approvedBy:"通过人",returnedBy:"退回人",comment:"审批评论",result:"审批结果",noHistory:"此技能尚未提交审核",pendingHint:"等待管理员审核",approvingHint:"管理员已确认通过,正在发布到企业共享空间",approving:"{{name}}确认通过,等待完成发布"},rve={failed:"待审核空间暂不可用",retry:"重试"},sve={approveTitle:"通过申请",returnTitle:"退回申请",approveDescription:"通过后,{{name}} 的 {{version}} 版本将在企业共享空间中向全员公开",returnDescription:"退回 {{name}} 的 {{version}} 版本,并向申请人说明原因",reason:"退回理由",reasonRequired:"请填写退回理由",reasonHelp:"最多 256 个字符,申请人可以看到此理由",saving:"处理中…",failed:"审批失败,请重试",approved:"{{name}} 已通过并公开",returned:"{{name}} 已退回",comment:"评论(可选)",commentHelp:"最多 256 个字符,申请人可以看到此评论"},ove={title:"AI 评分",points:"{{score}} 分",insufficient:"依据不足",status:{unscored:"尚未评分",not_requested:"尚未评分",queued:"等待评分",running:"评分中",completed:"已评分",failed:"评分失败"},loading:"加载评分…",starting:"正在提交评分…",loadFailed:"加载评分失败",retryFailed:"提交评分失败",failed:"评分未完成,请管理员重试",retry:"重新评分",start:"开始评分",reload:"重新加载",download:"下载 JSON",expand:"展开",collapse:"收起",hint:"评分针对本次提交版本,供人工审批参考",dimensions:{safety:"安全性",usability:"易用性",completeness:"完整性",reliability:"可靠性",maintainability:"可维护性"},risks:"风险提示",suggestions:"改进建议",model:"评分模型",rubric:"评分标准版本",time:"评分时间",severity:{low:"低风险",medium:"中风险",high:"高风险",critical:"严重风险"},coverage:"评审范围",coverageCount:"已评审 {{included}} / {{total}} 个文件",coverageIncomplete:"部分内容未纳入评审,评分依据不完整",omittedFile:"未评审 {{path}}:{{reason}}",truncatedFile:"仅评审部分内容 {{path}}:{{reason}}",originalError:"云端原始错误"},fQe={title:H0e,category:q0e,adminOnly:W0e,search:K0e,filterStatus:G0e,pendingCount:X0e,total:Y0e,kind:Z0e,status:J0e,columns:eve,actions:tve,empty:nve,detail:ive,space:rve,decision:sve,score:ove},hQe=Object.freeze(Object.defineProperty({__proto__:null,actions:tve,adminOnly:W0e,category:q0e,columns:eve,decision:sve,default:fQe,detail:ive,empty:nve,filterStatus:G0e,kind:Z0e,pendingCount:X0e,score:ove,search:K0e,space:rve,status:J0e,title:H0e,total:Y0e},Symbol.toStringTag,{value:"Module"})),ave={cancel:"取消",close:"关闭",retry:"重试",tryAgain:"重新尝试",closeDialog:"关闭{{title}}",agentFallback:"{{agent}} 智能体",unknownSource:"未知来源"},lve={terminalTitle:"终端",browserTitle:"沙箱浏览器",terminalSubtitle:"连接当前 AgentKit Session 的交互式终端",browserSubtitle:"在当前 AgentKit Session 中查看与操作浏览器",connecting:"正在连接…",connected:"已连接",notConnected:"尚未连接",opening:"正在打开 {{title}}",connectingSession:"工具正在连接当前 AgentKit Session。",openFailed:"{{title}} 打开失败"},cve={title:"恢复 Codex 对话",subtitle:"选择当前 Sandbox Session 中最近更新的 Thread",loading:"正在读取历史对话",loadFailed:"历史对话读取失败",empty:"暂无可恢复的对话"},uve={title:"Codex 权限",subtitle:"设置会保存到当前 Sandbox Session,并同步到其中的所有 Thread",sandboxMode:"沙箱模式",approvalPolicy:"审批策略",approvalMethod:"审批方式",networkAccess:"允许网络访问",networkAccessHelp:"控制 workspace-write 与只读模式中的外部网络访问。",fullAccessWarning:"完全访问会关闭文件系统与网络隔离,请只在可信任务中使用。",save:"保存权限",sandboxChoices:{readOnly:{label:"只读",detail:"允许读取文件,不允许写入工作空间。"},workspaceWrite:{label:"工作区写入",detail:"允许在当前工作空间内读取与修改文件。"},fullAccess:{label:"完全访问",detail:"不启用沙箱隔离,适合明确可信的任务。"}},approvalChoices:{untrusted:{label:"仅不可信命令",detail:"只对 Codex 判断为不可信的操作发起审批。"},onRequest:{label:"按需审批",detail:"Codex 可在必要时请求你确认命令或文件修改。"},never:{label:"不审批",detail:"Codex 不会暂停并请求人工批准。"}},reviewerChoices:{user:{label:"由我审批",detail:"审批请求会显示在 Studio 中,由你决定。"},autoReview:{label:"自动审查",detail:"使用 Codex 自动审查流程处理审批请求。"}}},dve={title:"工作空间",subtitle:"选择当前 Codex Thread 执行命令与修改文件的目录",absolutePath:"绝对路径",browse:"浏览",parent:"上一级",empty:"当前目录没有子目录",locked:"当前对话已经开始,工作空间已锁定。新建 Sandbox 会话后可重新选择。",useDirectory:"使用此目录"},fve={fileTitle:"允许修改文件?",commandTitle:"允许执行命令?",subtitle:"Codex 正在等待你的决定",workingDirectory:"执行目录",decline:"拒绝",acceptOnce:"仅本次允许",acceptSession:"本会话允许"},hve={availableSkills:"可用 Skills",selectModel:"选择模型",commands:"Codex 快捷命令",currentModel:"当前:{{model}}",loadingSkills:"正在发现当前工作区的 Skills…",loadingModels:"正在读取模型…",noSkillMatches:"当前工作区没有匹配的 Skill",noModelMatches:"没有匹配模型,也可以直接输入模型 ID",noCommandMatches:"没有匹配的快捷命令",skillFallback:"加载并执行该 Skill",add:"添加",uploadImage:"上传图片",uploadDocument:"上传文档或 PDF",uploadVideo:"上传视频",openTerminal:"进入终端",viewBrowser:"查看浏览器",permissions:"Codex 权限",workspaceLocked:"对话已开始,工作空间已锁定",selectWorkspace:"选择工作空间",workspace:"Codex 工作空间",endpointCopied:"Endpoint 已复制",copyEndpoint:"复制 Sandbox Endpoint",continuePlaceholder:"继续说明你想实现或调整的内容",messagePlaceholder:"向 AgentKit 沙箱发送消息,输入 / 查看命令,输入 $ 调用 Skill…",stop:"停止生成",send:"发送",stopping:"正在确认停止…",resume:"恢复任务",steer:"追加要求",steerPlaceholder:"可继续追加要求,或随时停止任务…"},pve={defaultName:"我的智能体",namedDefault:"我的 {{agent}}",creatingTitle:"正在创建 {{agent}} 智能体",failedTitle:"启动失败",createTitle:"创建 {{agent}} 智能体",fallbackError:"AgentKit 沙箱初始化失败,请稍后重新尝试。",creatingDescription:"正在创建并等待 {{agent}} 智能体就绪,这通常需要半分钟",name:"智能体名称",storageSize:"存储大小",storageHelp:"数据将持久化保存,可设置 {{min}}–{{max}} GiB。",persistent:"持久化",persistenceUnsupported:"当前环境不支持快照持久化",persistentHelp:"保留智能体数据,后续可继续使用。",temporaryHelp:"智能体将在 8 小时后清空",cancelCreation:"取消创建",confirm:"确认创建",retry:"重新尝试"},mve={activeAria:"Codex 智能体会话已开启",openAria:"开启 Codex 智能体会话",active:"Codex 智能体会话中",entry:"灵光一现",exit:"退出当前智能体",expired:"已到期",remainingHours:"剩余 {{hours}} 小时 {{minutes}} 分钟",remainingMinutes:"剩余 {{minutes}} 分钟",expiryWarning:"远端开发环境最长保留 8 小时,将于 {{expiry}} 到期({{remaining}});到期后清除对话和文件。",usingAgent:"当前您在使用 {{agent}} 智能体",activityAria:"Sandbox 操作记录",activity:"操作记录",tokenUsageAria:"Codex Token 用量",tokens:"{{label}}:{{value}} tokens",tokenLabels:{total:"总计",input:"输入",cachedInput:"缓存输入",output:"输出",reasoningOutput:"推理输出"}},gve={back:"返回智能体列表",subtitle:"{{agent}} 智能体详情",type:"智能体类型",status:"状态",createdBy:"创建人",snapshotStatus:"快照状态",toolType:"工具类型",createdAt:"创建时间",snapshotReason:"快照原因",expiresAt:"过期时间",snapshotId:"快照 ID",sessionId:"会话 ID",sourceSessionId:"来源 Session ID",delete:"删除智能体",waking:"唤醒中…",opening:"打开中…",wake:"唤醒智能体",open:"打开智能体",deleteTitle:"删除智能体?",deleteDescription:"将删除“{{name}}”及其保存的数据,此操作无法撤销。",deleting:"删除中…",confirmDelete:"确认删除",sleepingHint:"该智能体已休眠,进入时需要唤醒,可能需要一些时间。",wakingHint:"正在唤醒智能体,可能需要一些时间。",agentId:"智能体 ID"},bve={back:"返回智能体列表",createdBy:"创建人 {{creator}}",ariaLabel:"智能体工作区",main:"主界面",terminal:"终端",mainTitle:"{{agent}} 主界面",openingTerminal:"正在打开终端…",terminalTitle:"{{agent}} 终端"},yve={prompt:`使用 AgentKit Studio Plugin 端云接力当前会话、项目和任务。请直接执行,不要让我手动打开终端。
+- 保持礼貌、专业的语气。`},Ibe={requestFailed:"请求失败 ({{status}}){{detail}}",a2aSpaces:{credentialsMissing:"服务端未配置云厂商 AK/SK,无法访问 AgentKit 智能体中心",loginRequired:"请先登录以访问 AgentKit 智能体中心"},vikingKnowledge:{credentialsMissing:"服务端未配置云厂商 AK/SK,无法访问 VikingDB 知识库",loginRequired:"请先登录以访问 VikingDB 知识库"},vikingMemory:{credentialsMissing:"服务端未配置云厂商 AK/SK,无法访问 VikingDB 记忆库",loginRequired:"请先登录以访问 VikingDB 记忆库"},mcpGateway:{missingHttpTool:"请返回“添加 MCP 工具”并添加至少一个 HTTP MCP 服务;MCP 稳定性治理不支持 stdio 服务。",missingUrl:"已添加的 HTTP MCP 工具缺少有效服务地址,请返回“添加 MCP 工具”补充后再发布。"},customModel:{fallbackName:"自定义模型",apiKeyLabel:"{{name}} 模型 API Key",fallbackApiKeyLabel:"{{name}} 的备用模型 {{model}} API Key"},deploymentEnv:{serverInjected:"由服务端注入",selectedApiKeyPlaceholder:"由所选 API Key 注入",mcpInjectedComment:"由已添加的 MCP 工具注入",restoredPlaceholder:"由 Studio 服务端安全恢复",generatedMcpPlaceholder:"由已添加的 HTTP MCP 工具自动生成",restoredHelp:"更新时由 Studio 服务端合并 MCP 地址与认证,不向浏览器返回旧密钥。",mergedMcpHelp:"Studio 服务端自动合并 MCP 地址与可选认证,不向浏览器返回旧密钥。",listSeparator:"、",requirementHint:"优化项“{{labels}}”依赖此配置。",requiredBy:"优化项“{{labels}}”依赖此配置,请填写 {{key}}。",required:"请填写 {{label}}({{key}})。",invalidJson:"JSON 格式不正确"},drafts:{unsupportedVersion:"本机草稿版本暂不受支持,请升级 Studio 后重试。",invalidFormat:"本机草稿数据格式无效。",readFailed:"无法读取本机草稿,浏览器中的草稿数据可能已损坏。",quotaExceeded:"浏览器存储空间不足,草稿未保存。请删除不需要的草稿或清理此站点的浏览器存储后重试。",writeRejected:"浏览器拒绝保存草稿,请检查站点存储权限后重试。"},skills:{searchFailed:"搜索失败 ({{status}})",downloadFailed:"下载技能失败 ({{status}})",agentKitRequestFailed:"AgentKit Skills 请求失败",missingManifest:"{{location}} 缺少 SKILL.md",invalidParentPath:"{{location}} 包含非法路径(..):{{path}}",invalidPath:"{{location}} 包含非法路径:{{path}}",localDescription:"本地 Skill",folderSource:"文件夹",noManifest:"{{location}} 中未发现 SKILL.md"},zip:{invalid:"无效的 zip:找不到 EOCD",tooManyFiles:"zip 文件数不能超过 {{count}} 个",tooLarge:"zip 解压后的内容过大"}},Pbe={back:"返回开发会话",runtimeName:"Runtime 名称",runtimeNameExists:"Runtime 名称已存在,请更换后重试",checkingRuntimeName:"正在检查 Runtime 名称",verifiedSource:"已验证源码",deployableSource:"可部署源码",verifiedByCodex:"已通过 Codex 云端验证",entryPoint:"入口",files:"文件",artifact:"构建产物",validationReport:"验证报告",verifiedHint:"源码由服务端从已验证交付物物化,浏览器文件不能替换。",unverifiedHint:"源码已由服务端安全物化,部署前请确认 Runtime 配置。",env:{requiredPlaceholder:"请输入 {{key}}",optionalPlaceholder:"可选:{{key}}"}},Dbe={name:"代码包",back:"返回创建方式",reading:"正在读取代码包",readingEllipsis:"正在读取代码包…",uploadFirst:"请先上传代码包",uploadAriaLabel:"代码包上传",upload:"上传代码包",reupload:"重新上传代码包",uploadPrompt:"请上传代码包",filesRecognized:"已识别 {{count}} 个文件,点击区域可重新上传",dropHint:"点击或拖拽上传,支持 .zip 格式,最大 50 MB;可使用 app.py,或由 agentkit.yaml 声明入口",viewFiles:"查看文件",chooseFile:"选择代码包",errors:{invalidFormat:"请选择 .zip 格式的代码包。",tooLarge:"代码包不能超过 50 MB。",invalidPath:"压缩包包含非法路径:{{name}}",empty:"压缩包中没有可部署的文件。",tooManyFiles:"代码包文件数不能超过 {{count}} 个。",duplicateFile:"代码包包含重复文件:{{path}}",manifestParse:"agentkit.yaml 无法解析:{{detail}}",manifestRoot:"agentkit.yaml 根节点必须是对象。",manifestCommon:"agentkit.yaml 的 common 必须是对象。",entryPointType:"agentkit.yaml 的 common.entry_point 必须是文件路径。",entryPointInvalid:"agentkit.yaml 的 common.entry_point 不是有效文件路径。",entryPointMissing:"代码包中不存在 agentkit.yaml 声明的启动入口:{{entryPoint}}",defaultEntryPointMissing:"代码包根目录必须包含 app.py,或在 agentkit.yaml 的 common.entry_point 中声明已有入口。"}},Mbe={label:"Agent 执行画布",readOnlyLabel:"只读 Agent 执行画布",minimapLabel:"执行流程缩略图",controls:{ariaLabel:"执行流程控制",zoomIn:"放大",zoomOut:"缩小",fitView:"适应视图"},rootAgent:"主 Agent",unnamedStep:"未命名步骤",terminals:{input:"用户请求",output:"最终回复"},edges:{then:"然后",continueLoop:"继续循环",call:"调用"},patterns:{llm:{label:"智能体",description:"理解任务并直接完成一个具体工作"},sequential:{label:"分步协作",description:"内部步骤按照顺序依次执行"},parallel:{label:"同时处理",description:"内部步骤同时工作,完成后统一汇总"},loop:{label:"循环执行",description:"重复执行内部步骤,直到满足停止条件"},a2a:{label:"远程智能体",description:"调用已经存在的远程 Agent"}},actions:{insertHere:"在这里插入步骤",deleteNamed:"删除 {{name}}",deleteNode:"删除节点",addSubagent:"添加子 Agent",addParallelStep:"添加一个同时处理的步骤",addLoopStep:"添加循环步骤",addNextStep:"添加下一个步骤",addFirst:"添加到最前",addLast:"添加到最后"}},Lbe={title:"智能构建",subtitle:"描述需求,完成 Agent 的构建、调试与验证。",model:{label:"模型",placeholder:"选择模型",retiring:"即将下线",currentConfiguration:"当前配置",loadError:"加载模型列表失败"},availability:{checking:"正在检查智能开发能力…",unavailable:"当前无法使用智能模式,请返回后重试。"},goal:{title:"从目标开始",continueTitle:"继续优化项目",hint:"只需说明 Agent 要解决的问题;如有影响结果的关键信息,会在开始前向你确认。",continueHint:"说明这次要调整的内容,完成后会保存为新版本。",basedOn:"基于",clearSelection:"取消选择",label:"目标描述",optimizationLabel:"优化目标",placeholder:"例如:创建一个能读取销售数据、生成周报并校验输出格式的 Agent",optimizationPlaceholder:"例如:增加数据来源标注,并在信息不足时先向用户确认"},actions:{preparing:"准备中…",build:"开始构建",optimize:"开始优化"},preparation:{accepted:"目标已收到,马上开始实现",preparing:"正在创建任务环境…",starting:"环境已就绪,正在启动 Codex…",next:"接下来会先梳理目标和实现方式,再编写、运行和验证 Agent。"},tasks:{title:"进行中的任务",hint:"离开页面后仍会继续,可随时回来查看和补充要求。",refresh:"刷新任务列表",loading:"正在读取任务…",empty:"暂无进行中的任务",emptyHint:"开始构建后,可以从这里回到任务。",loadError:"暂时无法读取任务,请重试。",openError:"暂时无法打开任务,请重试。",startedAt:"开始于 {{time}}",open:"查看任务",opening:"正在连接…",states:{queued:"等待开始",running:"构建中",recovering:"正在重连",waiting_user:"等待你的回复",stopping:"正在停止",succeeded:"已完成",failed:"未完成",cancelled:"已停止"}}},$be={title:"已保存项目",description:"选择已有版本继续优化,或查看、下载和部署源码。",refresh:"刷新项目列表",checkingStorage:"正在检查项目存储…",unavailableTitle:"暂时无法读取项目",storageCheckError:"无法确认项目存储状态,请稍后重试。",storageNotConfigured:"项目存储尚未配置。",loadingMigrated:"正在读取已迁移项目…",loadingSaved:"正在读取已保存项目…",loadingVersions:"正在读取项目版本…",unknownTime:"时间未知",sourceDownloaded:"源码已下载。",projectSummary_one:"{{count}} 个版本 · 更新于 {{time}}",projectSummary_other:"{{count}} 个版本 · 更新于 {{time}}",versionSummary_one:"{{time}} · {{count}} 个文件",versionSummary_other:"{{time}} · {{count}} 个文件",noVersionDescription:"暂无版本描述",latestVersion:"最新版本",defaultVersionName:"版本 · {{time}}",rename:{projectTitle:"修改项目名称",versionTitle:"修改版本名称",projectLabel:"项目名称",versionLabel:"版本名称",hint:"支持中英文、数字和常见标点,最多 {{max}} 个字符。",required:"请输入名称。",tooLong:"名称不能超过 {{max}} 个字符。",invalidCharacters:"名称不能包含换行、控制字符、不可见格式字符或 < >。",save:"保存名称",saving:"保存中…",updated:"名称已更新。",failed:"名称保存失败,请重试。"},verified:"已验证",pendingVerification:"待确认",viewSource:"查看源码",download:"下载",downloading:"下载中…",optimize:"去优化",optimizeUnavailable:"去优化,暂不支持",errors:{projects:"无法读取已保存项目。",source:"无法读取项目源码。",versions:"无法读取项目版本。",download:"下载源码失败。",prepareDeployment:"无法准备部署源码。",deleteVersion:"删除项目版本失败。",migrated:"无法读取已迁移项目",saved:"无法读取已保存项目"},empty:{migratedTitle:"还没有已迁移的项目",savedTitle:"还没有已保存的项目",migratedDescription:"完成首次迁移后,源码会自动保存在这里。",savedDescription:"完成首次构建后,源码会自动保存在这里。",noVersions:"这个项目还没有可用版本。"},compare:{selected:"已选择 {{count}}/2",selectedLabel:"已选择",select:"选择",view:"查看对比",start:"对比版本"},delete:{title:"删除这个版本?",onlyVersion:"“{{name}}”只有这一个版本,删除后项目也会移除。此操作无法撤销。",description:"该版本的源码和验证记录将永久删除,其他版本不受影响。",confirm:"删除版本"}},Fbe={title:"选择创建方式",subtitle:"以不同模式构建您的智能体",features:"特性",quick:{title:"快速模式",description:"动态派生子智能体自主完成任务",features:{dynamicSubagents:"动态派生子智能体",autonomousPlanning:"自主规划执行",collaboration:"多智能体协作",summary:"自动汇总结果",skills:"按需调用技能",trace:"任务过程可追踪"}},traditional:{title:"传统模式",description:"高度自定义您的智能体结构",features:{visualConfig:"可视化配置",migration:"存量智能体迁移",debugging:"实时调试",optimization:"可选性能优化",parameters:"精细参数控制"}}},Bbe={placeholder:"输入系统提示词;键入 ## 加空格可创建二级标题…",toolbar:{undo:"撤销 {{shortcut}}",redo:"重做 {{shortcut}}",paragraph:"正文",quote:"引用",heading:"标题 {{level}}",selectBlockType:"选择文本类型",blockType:"文本类型",bold:"加粗",removeBold:"取消加粗",italic:"斜体",removeItalic:"取消斜体",bulletedList:"无序列表",numberedList:"有序列表"}},Ube={local:{duplicatesSkipped:"已跳过重复技能:{{names}}",invalidDrop:"请拖入包含 SKILL.md 的文件夹或一个 .zip 文件",readError:"读取失败:{{detail}}",dropLabel:"拖入文件夹或 ZIP,自动识别 Skill",hint:"每个技能需包含 SKILL.md。支持包含多个技能的目录。",reading:"正在读取文件…",fileCount:"本地 · {{count}} 个文件"},hub:{searchError:"搜索失败,请稍后重试。",searchPlaceholder:"搜索火山 Find Skill 技能广场,例如 数据分析、PDF…",search:"搜索",searching:"正在搜索…",noResults:"没有找到匹配的技能,换个关键词试试。",hint:"输入关键词搜索火山 Find Skill 技能广场,所选技能会在生成项目时下载到 skills/ 目录。"},space:{loadError:"加载失败",loadingSpaces:"正在加载 AgentKit Skills 中心…",noSpaces:"此账号下没有 AgentKit Skills 中心。",selectSpace:"选择 AgentKit Skills 中心",openConsole:"在火山引擎控制台打开",loadingSkills:"正在加载技能列表…",noSkills:"此 AgentKit Skills 中心暂无技能。"}},Qbe={unnamedNode:"未命名节点",editInstruction:"点击编辑指令…",controls:{ariaLabel:"工作流画布控制",zoomIn:"放大",zoomOut:"缩小",fitView:"适应视图"},sections:{info:"工作流信息",execution:"执行方式",nodes:"节点",nodeConfig:"节点配置"},types:{sequential:{label:"顺序",description:"节点依次执行"},parallel:{label:"并行",description:"节点同时执行"},loop:{label:"循环",description:"节点循环执行"}},placeholders:{description:"这个工作流做什么…",agentDescription:"这个 Agent 做什么…",instruction:"你是一个…"},errors:{workflowNameUnique:"名称须与 Agent 节点名称保持唯一",agentNameUnique:"Agent 名称在当前工作流中必须唯一"},dragHint:"拖拽到画布,或点击下方按钮添加",agentNode:"Agent 节点",addNode:"添加节点",connectHint:"拖拽节点的圆点连线以表达执行顺序。",create:"创建工作流",deleteNode:"删除节点",nameHelp:"仅使用英文字母、数字和下划线,且名称保持唯一。",instruction:"指令 (instruction)",tools:"工具 (逗号分隔)",nodeId:"节点 ID",empty:{selectNode:"选择一个节点以编辑其配置",summary:"共 {{nodes}} 个节点 · {{edges}} 条连线"}},zbe={ariaLabel:"快速模式创建",progress:"快速模式创建进度",steps:{agent:{label:"智能体",title:"基本信息",description:"设置智能体的名称、用途、行为方式与能力"},environment:{label:"执行环境",title:"配置执行环境",description:"选择默认环境或已构建的自定义环境"},deployment:{label:"部署偏好",title:"部署偏好",description:"定义 AgentKit 云上参数"}},model:{label:"模型",source:"模型来源",name:"模型名称",fallbacks:"Fallback 模型",fallbackPlaceholder:"备用模型名称",addFallback:"添加备用模型",addProviderFallback:"添加其他服务商",removeFallback:"移除",fallbackType:"备用模型类型",fallbackSameProvider:"同服务商",fallbackOtherProvider:"其他服务商",apiKeyEnv:"API Key 环境变量",invalidApiKeyEnv:"环境变量名只能包含字母、数字和下划线,且不能以数字开头。",fallbackHelp:"同服务商备用模型复用主模型连接;其他服务商会使用单独的 provider、API Base 和 API Key。",fallbackIgnored:"空值、重复值或与主模型相同的模型会被忽略。",provider:"服务商 Provider",invalidApiBase:"请输入合法的 http:// 或 https:// 链接。",volcengineArk:"火山方舟",custom:"自定义",gateway:"模型网关",comingSoon:"待上线",currentApiKey:"当前 API Key",currentConfiguration:"当前配置",loadingApiKeys:"正在加载 API Key",selectApiKey:"选择 API Key",searchApiKeys:"搜索 API Key 名称",noApiKeys:"暂无可用 API Key",loadingModels:"正在加载模型",selectModel:"选择模型",searchModels:"搜索名称、Model ID 或服务商",noModels:"没有可用的模型",apiKeyPlaceholder:"请输入模型 API Key",credentialsLoadError:"模型凭据加载失败",modelsLoadError:"模型列表加载失败"},identity:{unnamedPool:"未命名用户池",currentPool:"{{value}}(当前用户池)",userPool:"用户池",loading:"正在加载用户池",placeholder:"请选择用户池",search:"搜索用户池",empty:"当前账号下暂无 Identity 用户池",currentHint:"当前 Studio 的登录 JWT 将透传访问此 Runtime",mismatchHint:"所选用户池不是当前 Studio 使用的用户池,部署后无法从 Studio 调用此 Runtime",selectionHint:"当前 Studio 使用的用户池已在列表中标注"},agent:{namePlaceholder:"输入智能体名称",descriptionPlaceholder:"说明这个智能体可以做什么",prompt:"提示词",promptPlaceholder:"定义角色、目标和行为边界",skills:"技能",addSkill:"添加技能"},validation:{descriptionRequired:"请输入描述",promptRequired:"请输入提示词",modelRequired:"请选择模型",apiKeyRequired:"请先填写或选择模型 API Key",instanceIntegers:"最小实例数必须为大于等于 0 的整数,最大实例数必须为大于 0 的整数",instanceOrder:"最小实例数不能大于最大实例数",userPoolRequired:"请选择用于 Runtime 鉴权的用户池"},deployment:{runtimeName:"Runtime 名称",runtimeNameUpdateHint:"更新时保持现有 Runtime 名称不变",runtimeNameHint:"仅支持英文字母、数字、下划线和连字符",region:"发布区域",authentication:"鉴权方式",apiKeyDescription:"默认方式,使用 Runtime API Key 访问",userPoolDescription:"使用 Identity 用户池签发的 JWT",sessionStorage:"会话存储",inMemoryStorage:"In-memory 临时存储",backends:{sqlite:"SQLite 文件",mysql:"MySQL",postgresql:"PostgreSQL"},instances:"实例设置",minInstances:"最小实例数",maxInstances:"最大实例数",inMemoryHint:"为避免多实例间会话丢失,推荐将 Runtime 固定为 1~1",networkMode:"网络模式",network:{public:"公网",private:"私网",both:"公网与私网"},subnetIds:"子网 ID(可选,多个用逗号分隔)",sharedInternet:"VPC 内共享公网出口",sharedInternetHint:"允许私网 Runtime 通过共享出口访问公网",evaluationSets:"评测集",createEvaluationSets:"自动创建评测集",evaluationSetsHint:"部署成功后自动创建 Good Case 和 Bad Case 评测集",resources:"资源配置",complete:"部署已完成",preparing:"正在准备部署…"},environmentVariables:{title:"环境变量",add:"添加变量",nameAriaLabel:"环境变量名称",valueAriaLabel:"{{name}} 的值",deleteNamed:"删除 {{name}}"},actions:{updateAgain:"再次更新",deployAgain:"重新部署",updateAndPublish:"更新并发布"}},Vbe={actions:{addSubagent:"添加子 Agent",clearRoot:"清空根 Agent",clearRootConfirmation:"清空根 Agent 的全部配置和子 Agent?此操作无法撤销。"},workspace:{progress:"Agent 创建进度",modes:{build:"架构",validate:"调试",optimize:"优化",environment:"环境",publish:"发布"},titles:{build:"个性化您的智能体架构",validate:"调试您的智能体",optimize:"为您的智能体选择优化项",environment:"配置云上环境",publish:"准备好部署您的智能体"}},sections:{type:{label:"Agent 类型",hint:"选择 Agent 类型"},basic:{label:"基本信息",hint:"名称、描述与系统提示词"},model:{label:"模型配置",hint:"模型与服务(可选)"},tools:{label:"工具",hint:"可调用的能力"},skills:{label:"技能",hint:"声明式技能"},knowledge:{label:"知识库",hint:"外部知识检索"},memory:{label:"记忆",hint:"短期与长期记忆"},subagents:{label:"子 Agent",hint:"嵌套协作"},review:{label:"完成",hint:"预览并创建"}},agentTypes:{ariaLabel:"Agent 类型",remoteChildOnly:"远程智能体只能作为子步骤使用",llm:{label:"智能体",fullLabel:"LLM 智能体",description:"大模型驱动,自主完成任务"},sequential:{label:"分步协作",fullLabel:"顺序型智能体",description:"子 Agent 按顺序依次执行"},parallel:{label:"同时处理",fullLabel:"并行型智能体",description:"子 Agent 并行执行后汇总"},loop:{label:"循环执行",fullLabel:"循环型智能体",description:"子 Agent 循环执行到满足条件"},a2a:{label:"远程智能体",fullLabel:"远程 Agent",description:"通过 A2A 协议调用远程 Agent"}},basic:{agentName:"Agent 名称",name:"名称",agentDescription:"智能体描述",descriptionPlaceholder:"简要描述这个 Agent 的用途,便于团队识别…",nameHelp:"遵循 Google ADK 命名规则,且在执行流程中保持唯一。",rootDescriptionHelp:"完整描述会保留;部署时会自动整理为符合 Runtime 规范的单行描述。",descriptionHelp:"描述会显示在 Agent 列表与选择器中。",orchestratorHelp:"这是一个协作容器,本身不生成回答。请在左侧画布中添加任务步骤,并通过拖拽调整它们的位置。",maxIterations:"最大轮次",maxIterationsHelp:"循环编排反复执行子 Agent,直到满足条件或达到该轮次上限。",agentCenter:"AgentKit 智能体中心",agentCenterHelp:"远程 Agent 的名称、描述和能力来自中心返回的 Agent Card。系统会根据每轮任务动态发现并挂载匹配的 Agent。",moreOptions:"更多选项",systemPrompt:"系统提示词",loadingMarkdown:"正在加载 Markdown 编辑器…",markdownHelp:"支持 Markdown 快捷输入,例如键入 ## 加空格创建二级标题。",unnamed:"未命名",unnamedAgent:"未命名智能体"},validation:{remoteRoot:"远程 Agent 只能作为子 Agent",missingRegistry:"请选择 AgentKit 智能体中心",name:{required:"名称为必填项",reserved:"user 是 Google ADK 保留名称,请使用其他名称",characters:"名称须以英文字母或下划线开头,且只能包含英文字母、数字和下划线"},duplicateName:"Agent 名称在当前结构中必须唯一",missingDescription:"描述为必填项",mcpDuplicateName:"MCP 名称重复,请为每个服务使用唯一名称",mcpDuplicateUrl:"MCP 地址重复,请删除重复服务后再发布",missingSubagent:"缺少子 Agent",missingPrompt:"系统提示词为必填项",apiKeyRequired:"请先填写或选择模型 API Key",missingSubagentDetail:"{{type}}至少需要添加一个子 Agent 后才能调试或发布。",problem:"{{name}}:{{problem}}"},ai:{ariaLabel:"AI 自动填写 Agent 配置",minimumLength:"请至少输入 {{count}} 个字符。",replaceConfirmation:"生成的新配置会替换当前画布和属性,确定继续吗?",placeholder:"描述目标,使用 {{model}} 模型一键生成配置",generate:"智能生成",generating:"正在智能生成",success:"生成成功",regenerate:"重新生成",failed:"智能生成失败"},debug:{ariaLabel:"智能体调试工作区",unavailable:"当前后端暂不支持生成 Agent 调试运行。",baseline:"基准组",comparison:"对照组 {{count}}",selectModel:"请选择模型",enterDescription:"请输入描述",enterPrompt:"请输入系统提示词",duplicateConfiguration:"测试配置不能重复",starting:"启动中…",applyAndRestart:"应用并重启",restart:"重新启动",start:"启动环境",defaultModel:"默认模型",testConfiguration:"测试配置",deleteVariant:"删除 {{name}}",deleteVariantGroup:"删除对照组",creatingEnvironment:"正在创建测试环境…",configurationChanged:"配置已变更,请重新启动环境。",ready:"环境已就绪",readyHint:"发送消息以比较智能体回复。",startHint:"先完善配置,再启动环境。",viewTraceNamed:"查看 {{name}} 的调用链路",traceUnavailable:"发送消息后可查看调用链路",trace:"调用链路",useConfiguration:"使用此配置",finishConfiguration:"完成配置",finishAndStart:"完成并启动",currentAgentModel:"当前 Agent 模型",configurationHint:"修改仅用于本次对比,选择使用后才会进入部署流程。",messagePlaceholder:"向已启动的测试环境发送消息…",startOneFirst:"请先启动至少一个测试环境",addVariant:"添加对照组",traceTitle:"调用链路 · {{name}}",leaveTitle:"离开调试?",leaveDescription:"离开调试页面后,当前环境将被清理。您可以通过重新启动环境进行新的测试。",cleaning:"清理中…",confirmLeave:"确定离开",closeLeaveConfirmation:"关闭离开调试确认"},optimization:{ariaLabel:"智能体优化选项",scenario:"优化场景",components:"优化组件",bytePlusUnavailable:"BytePlus 账号暂不支持 Harness Sidecar 优化项。请保持优化项为空后继续部署,普通 BytePlus 智能体不受影响。",releaseScenario:"优化场景:{{profile}}",profiles:{default:{label:"自定义",description:"按需选择组件,不勾选时不启动 Sidecar。"},ops:{label:"运维场景",description:"适用于运维诊断、数据库、日志和监控 MCP。"}},groups:{quality:"提升回答质量",cost:"降低运行成本",stability:"增强运行稳定性"},options:{context_engine:{label:"上下文治理",description:"治理上下文组装、任务锚定和上下文预算。"},compressor:{label:"上下文与结果压缩",description:"压缩长上下文和大型工具结果,降低 Token 成本。"},verifier:{label:"回答校验与修复",description:"校验证据和回答,在失败时执行修复或告警。"},long_run_control:{label:"Goal 任务控制",description:"管理 Goal 任务的进度、续跑和结束条件。"},mcp_resilience:{label:"MCP 稳定性治理",description:"治理连接、超时、空结果、大返回和调用预算;默认包含 SQL 只读保护。"}}},model:{label:"模型",source:"模型来源",volcanoArk:"火山方舟",volcengineArk:"火山方舟",bytePlusModelArk:"BytePlus ModelArk",custom:"自定义",gateway:"模型网关",comingSoon:"待上线",configuration:"模型配置",name:"模型名称",fallbacks:"Fallback 模型",fallbackPlaceholder:"备用模型名称",addFallback:"添加备用模型",addProviderFallback:"添加其他服务商",removeFallback:"移除",fallbackType:"备用模型类型",fallbackSameProvider:"同服务商",fallbackOtherProvider:"其他服务商",apiKeyEnv:"API Key 环境变量",invalidApiKeyEnv:"环境变量名只能包含字母、数字和下划线,且不能以数字开头。",fallbackHelp:"同服务商备用模型复用主模型连接;其他服务商会使用单独的 provider、API Base 和 API Key。",fallbackIgnored:"空值、重复值或与主模型相同的模型会被忽略。",provider:"服务商 Provider",invalidApiBase:"请输入合法的 http:// 或 https:// 链接。",liteLlmProviders:"LiteLLM 支持列表",apiKeyPlaceholder:"请输入模型 API Key",available:"已开通",retiring:"即将下线",notActivated:"未开通",unavailable:"暂不可用",apiKeyLoadError:"加载 Ark API Key 失败",loadingApiKeys:"正在加载 API Key…",selectApiKey:"选择 API Key",currentApiKey:"当前 API Key",apiKeyList:"API Key 列表",searchApiKey:"搜索 API Key",searchApiKeyName:"搜索 API Key 名称",noApiKeys:"暂无可用 API Key",noMatchingApiKey:"没有匹配的 API Key",loading:"正在加载模型…",loaded:"已加载 {{count}} 个模型",loadError:"加载模型失败",selectModel:"选择模型",selectProviderModel:"选择服务商模型",providerModels:"服务商模型",search:"搜索模型",searchPlaceholder:"搜索名称、Model ID 或服务商",noMatches:"没有匹配的模型",empty:"暂无可用模型",unknownStatus:"未知状态",refresh:"刷新",refreshing:"刷新中…",activate:"开通",activateAction:"前往开通",currentConfiguration:"当前配置"},tools:{builtIn:"内置工具",builtInHelp:"勾选 VeADK 提供的内置能力,生成时会自动补全 import 与所需环境变量。",codeExecution:"代码执行配置",codeExecutionHelp:"指定 AgentKit 代码执行沙箱。",mcp:"MCP 工具"},catalog:{web_search:{label:"联网搜索",description:"火山引擎 Web Search,获取实时信息。"},parallel_web_search:{label:"并行联网搜索",description:"并行发起多条搜索查询,更快汇总。"},link_reader:{label:"网页读取",description:"抓取并阅读给定链接的正文内容。"},web_scraper:{label:"网页爬取",description:"结构化爬取网页(需要 Scraper 服务)。"},image_generate:{label:"图像生成",description:"文生图(Doubao Seedream)。"},image_edit:{label:"图像编辑",description:"图生图 / 编辑(Doubao SeedEdit)。"},video_generate:{label:"视频生成",description:"文/图生视频(Doubao Seedance),含任务查询。"},text_to_speech:{label:"语音合成 (TTS)",description:"把文本转成语音(火山语音)。"},run_code:{label:"代码执行",description:"在沙箱中执行代码。"},vesearch:{label:"VeSearch 智能搜索",description:"火山 VeSearch(需要 bot 端点)。"},links:{console:"控制台",documentation:"文档"},env:{modelAgentName:{comment:"模型名称"},embeddingModelName:{comment:"向量化模型(记忆/知识库需要)"},vikingMemoryProject:{comment:"VikingDB 记忆库项目"},vikingMemoryRegion:{comment:"VikingDB 记忆库地域"},vikingMemoryType:{comment:"记忆类型"},feishuAppId:{comment:"飞书应用 App ID"},feishuAppSecret:{comment:"飞书应用 App Secret",placeholder:"输入 App Secret"},registrySpaceId:{comment:"AgentKit 智能体中心",placeholder:"请选择智能体中心"},registryTopK:{comment:"召回 Agent 数量"},registryRegion:{comment:"AgentKit 智能体中心地域"},registryEndpoint:{comment:"AgentKit 智能体中心 OpenAPI 地址"},agentKitToolId:{comment:"代码执行沙箱 ID"},agentKitToolRegion:{comment:"AgentKit Tools 地域"},openVikingUrl:{comment:"OpenViking 服务地址"},openVikingMemoryUserId:{comment:"记忆归属 ID",help:"对应 viking://user/<此值>/peers/<请求用户>/memories 中的 user 段;用于隔离 Agent、租户或业务场景,默认 default。"},openVikingMemoryPolicy:{comment:"记忆策略",help:"记忆的抽取策略和隔离策略,不填写时使用官方默认策略。"},openVikingKnowledgeUserId:{comment:"知识库归属 ID",help:"未配置资源目录时用于默认路径 viking://user/<此值>/resources/<知识库索引>/,默认 default。"},openVikingTargetUri:{comment:"知识库资源目录",help:"留空时由 KnowledgeBase index 自动生成;填写后直接检索该 OpenViking 资源目录,优先级最高。"},tlsServiceName:{comment:"TLS topic_id,留空自动创建"}}},backends:{shortTerm:{local:{label:"本地内存",description:"进程内,不持久化。适合开发调试。"},sqlite:{label:"SQLite 文件",description:"持久化到本地 .db 文件。"},mysql:{label:"MySQL",description:"持久化到 MySQL。"},postgresql:{label:"PostgreSQL",description:"持久化到 PostgreSQL。"}},longTerm:{local:{label:"本地向量库",description:"进程内 llama-index 向量库。"},opensearch:{label:"OpenSearch",description:"OpenSearch 向量检索。"},redis:{label:"Redis",description:"Redis 向量检索。"},viking:{label:"VikingDB Memory",description:"VikingDB 记忆库(支持用户画像)。"},openviking:{label:"OpenViking Memory",description:"OpenViking 长期记忆,按用户维度保存和检索偏好、事件与实体。"},mem0:{label:"Mem0",description:"Mem0 托管记忆服务。"}},knowledge:{viking:{label:"VikingDB Knowledge",description:"VikingDB 知识库。"},opensearch:{label:"OpenSearch",description:"OpenSearch 向量检索。"},context_search:{label:"Context Search",description:"火山 Context Search 引擎(无需向量化)。"},openviking:{label:"OpenViking Knowledge",description:"OpenViking 资源目录知识库,无需向量化模型配置。"}}},exporters:{apmplus:{label:"APMPlus",description:"火山 APMPlus 应用性能监控。"},cozeloop:{label:"CozeLoop",description:"扣子 CozeLoop 链路观测。"},tls:{label:"TLS (日志服务)",description:"火山 TLS 日志服务导出。"}},knowledge:{title:"知识库",description:"启用外部知识检索(RAG),让 Agent 基于你的资料作答。",backend:"知识库后端",vikingDatabase:"VikingDB 知识库"},memory:{shortTerm:"短期记忆",shortTermDescription:"存储单会话上下文",shortTermBackend:"短期记忆后端",longTerm:"长期记忆",longTermDescription:"存储跨会话上下文,通常使用向量化检索",longTermBackend:"长期记忆后端",vikingDatabase:"VikingDB 记忆库",autoSave:"自动保存会话到长期记忆",autoSaveDescription:"会话结束时自动把内容写入长期记忆,无需手动调用。"},mcp:{removeTool:"删除 MCP 工具",namePlaceholder:"名称(可选)",urlPlaceholder:"MCP 服务地址",pathWarning:"当前填写的是网关根地址。仅当根路径就是 MCP Endpoint 时可直接使用;否则请补充完整服务路径。",tokenPlaceholder:"Bearer Token(可选)",showToken:"显示 Bearer Token",hideToken:"隐藏 Bearer Token",commandPlaceholder:"命令,例如 npx",argsPlaceholder:"参数,以空格分隔",stdioHint:"stdio 工具在部署环境中启动,请确保命令和依赖可用。",addTool:"添加 MCP 工具"},resources:{unnamedAgentCenter:"未命名智能体中心",unnamedKnowledgeBase:"未命名知识库",unnamedMemory:"未命名记忆库",loadError:"加载失败",loadingAgentCenters:"正在加载智能体中心…",agentCentersLoaded:"已加载 {{count}} 个智能体中心",noAgentCenters:"暂无智能体中心",noMatchingAgentCenters:"没有匹配的智能体中心",searchAgentKitCenter:"搜索 AgentKit 智能体中心",searchNameOrId:"搜索名称或 ID",selectAgentCenter:"选择智能体中心",selectAgentKitCenter:"选择 AgentKit 智能体中心",selectedAgentCenter:"已选智能体中心",agentKitCenter:"AgentKit 智能体中心",refreshAgentCenters:"刷新智能体中心",knowledgeBaseList:"知识库列表",knowledgeBasePlaceholder:"选择知识库",loadingKnowledgeBases:"正在加载知识库…",knowledgeBasesLoaded:"已加载 {{count}} 个知识库",noKnowledgeBases:"暂无知识库",noMatchingKnowledgeBases:"没有匹配的知识库",searchKnowledgeBase:"搜索知识库",selectKnowledgeBase:"选择知识库",refreshKnowledgeBases:"刷新知识库",memoryList:"记忆库列表",memoryPlaceholder:"选择记忆库",loadingMemories:"正在加载记忆库…",memoriesLoaded:"已加载 {{count}} 个记忆库",noMemories:"暂无记忆库",noMatchingMemories:"没有匹配的记忆库",searchMemory:"搜索记忆库",selectMemory:"选择记忆库",refreshMemories:"刷新记忆库"},env:{noAdditionalParameters:"此后端无需额外运行参数。",invalidJson:"请输入有效的 JSON。",helpAriaLabel:"{{label}}说明:{{help}}",openOpenViking:"打开 OpenViking {{label}}",valuePlaceholder:"请输入参数值",openVikingIndex:"OpenViking 资源索引",openVikingIndexHelp:"默认值:留空;生成项目时使用 Agent 名自动生成,例如 my_agent_kb。未配置 DATABASE_OPENVIKING_TARGET_URI 时,默认 URI 拼接为 viking://user/{知识库归属 ID,未填则 default}/resources/{资源索引}/;如果填写了 DATABASE_OPENVIKING_TARGET_URI,则直接使用该完整 URI。",openVikingIndexAriaLabel:"OpenViking 资源索引说明:{{help}}"},deployment:{vpcRequired:"使用 VPC 网络时,请填写 VPC ID。",apiKeyRequired:"请先选择模型使用的 API Key。",invalidEnvName:"环境变量名称不合法:{{key}}",requiredEnv:"{{name}}:请填写必填环境变量",generatingConfiguration:"正在生成部署配置",runtimeNameExists:"Runtime 名称已存在,请修改后重试。",preparing:"准备部署",complete:"部署完成",failed:"部署失败",updateAndPublish:"更新并发布",stages:{build:"构建镜像",deploy:"部署 Runtime",publish:"发布服务",running:"部署中"}},publish:{generating:"正在生成发布配置",validating:"校验 Agent 结构并准备部署快照…"}},Hbe={presets:{support:{name:"客服助手",description:"7×24 在线答疑,结合知识库与历史对话,稳定、礼貌地解决用户问题。",instruction:"你是一名专业、耐心的客服助手。请始终保持礼貌、友好的语气,优先依据知识库中的资料回答用户问题;当资料不足以确定答案时,如实告知用户并主动引导其提供更多信息,切勿编造。回答尽量简洁、分点清晰,必要时给出操作步骤。",subagents:{}},analyst:{name:"数据分析师",description:"运行代码完成统计与可视化,开启链路追踪,分析过程可观测、可复现。",instruction:"你是一名严谨的数据分析师。面对数据问题时,先厘清分析目标与口径,再通过编写并运行代码完成清洗、统计与可视化。每一步都要说明你的假设与方法,给出结论时附上关键数据支撑,并指出潜在的偏差与局限。",subagents:{}},translator:{name:"翻译助手",description:"中英互译,忠实、通顺、地道,保留原文语气与专业术语。",instruction:"你是一名专业的翻译助手,精通中英互译。请在忠实于原文含义的前提下,使译文自然、地道、符合目标语言表达习惯;保留专有名词与专业术语的准确性,并尽量贴合原文的语气与风格。仅输出译文,除非用户额外要求解释。",subagents:{}},coder:{name:"代码助手",description:"编写、调试与重构代码,可运行代码验证结果,给出清晰可维护的实现。",instruction:"你是一名资深软件工程师。请根据需求编写正确、清晰、可维护的代码,遵循目标语言的惯用风格与最佳实践。在不确定时通过运行代码验证你的实现,给出关键的边界条件与测试思路,并对复杂逻辑附上简要注释。",subagents:{}},researcher:{name:"研究员",description:"联网检索一手资料,结合知识库与长期记忆,输出有据可查的研究结论。",instruction:"你是一名严谨的研究员。面对研究问题时,先拆解关键子问题,再通过联网检索收集多个一手、可信的来源,交叉验证后再下结论。结论需注明出处与不确定性,区分事实与推断,避免以偏概全。",subagents:{}},"research-team":{name:"多智能体研究团队",description:"由检索员、分析员、撰写员协作的研究编排,分工完成端到端调研报告。",instruction:"你是一支研究团队的总协调者。负责拆解用户的研究任务,将检索、分析、撰写分别委派给对应的子 Agent,汇总各子 Agent 的产出,把控整体质量,最终输出结构清晰、有据可查的研究报告。",subagents:{0:{name:"检索员",description:"联网搜集与课题相关的一手资料与数据。",instruction:"你是研究团队中的检索员。根据课题联网检索多个可信来源,整理出关键事实、数据与原文出处,交付给分析员,不做主观结论。"},1:{name:"分析员",description:"对检索到的材料做交叉验证与归纳分析。",instruction:"你是研究团队中的分析员。对检索员提供的材料做交叉验证、归纳与对比,提炼洞见、识别矛盾与不确定性,形成结构化的分析要点。"},2:{name:"撰写员",description:"将分析结论组织为结构清晰、引用规范的报告。",instruction:"你是研究团队中的撰写员。把分析员的要点组织成结构清晰、语言通顺、引用规范的研究报告,确保每个结论都能追溯到来源。"}}}},tags:{tools:"工具",memory:"记忆",knowledgeBase:"知识库",tracing:"观测",subagents:"子 Agent {{count}}"},gallery:{title:"从模板新建",subtitle:"选择一个预制 Agent 模板,按需微调后即可创建。"},detail:{back:"返回模板列表",name:"名称",systemPrompt:"系统提示词",model:"模型",tools:"工具",memory:"记忆",knowledgeBase:"知识库",tracing:"观测追踪",subagents:"子 Agent({{count}})",create:"使用此模板创建",shortTermMemory:"短期",longTermMemory:"长期"}},qbe={checkingExpiry:"确认有效期中",waitingRecovery:"等待恢复",listFailed:"读取项目列表失败",recoveryFailed:"工作区恢复失败,请重试",operationFailed:"项目操作失败,请重试",title:"代码项目",back:"返回代码项目",restart:"本开发环境将在 {{countdown}} 后重启,请随时保存数据",expiresAt:"有效期至 {{date}}",exitFullscreen:"退出全屏",fullscreen:"全屏",exitFullscreenHint:"退出全屏(Esc)",recovering:"正在恢复工作区,完成后将自动返回项目",retry:"重试连接",search:"搜索代码项目",newTitle:"新建代码项目",new:"新建项目",readingStats:"正在读取项目统计",createdAt:"创建时间",opening:"正在打开",unknownCreatedAt:"创建时间未知",open:"打开项目",empty:"没有匹配的代码项目",close:"关闭新建项目",name:"项目名称",placeholder:"例如 my-agent",nameHelp:"以英文字母开头,可包含字母、数字、下划线和连字符,最多 64 个字符",cancel:"取消",create:"创建项目",files_one:"{{count}} 个文件",files_other:"{{count}} 个文件",directories_one:"{{count}} 个目录",directories_other:"{{count}} 个目录",separator:","},Wbe={enabled:"已启用",disabled:"已禁用",unknownStatus:"状态未知",allPermissions:"全部权限",customPermissions:"自定义权限",unknownPermissions:"权限未知",unnamed:"未命名 API Key",search:"搜索名称、状态或权限",noMatches:"没有匹配的 API Key",noModelPermission:"当前 API Key 无权限",modelAvailable:"可用",permissionState:{Available:"可用于对话",Shutdown:"已下线",VideoGeneration:"视频生成模型",Unsupported:"不支持作为对话模型",NotActivated:"尚未开通",Unknown:"未获取到模型状态"}},Kbe={common:_be,yaml:jbe,validation:Nbe,defaults:Rbe,helpers:Ibe,intelligentDeployment:Pbe,codePackage:Dbe,buildCanvas:Mbe,intelligent:Lbe,projectLibrary:$be,modePicker:Fbe,promptEditor:Bbe,skills:Ube,workflow:Qbe,workbench:zbe,traditional:Vbe,template:Hbe,workspace:qbe,modelApiKey:Wbe},tQe=Object.freeze(Object.defineProperty({__proto__:null,buildCanvas:Mbe,codePackage:Dbe,common:_be,default:Kbe,defaults:Rbe,helpers:Ibe,intelligent:Lbe,intelligentDeployment:Pbe,modePicker:Fbe,modelApiKey:Wbe,projectLibrary:$be,promptEditor:Bbe,skills:Ube,template:Hbe,traditional:Vbe,validation:Nbe,workbench:zbe,workflow:Qbe,workspace:qbe,yaml:jbe},Symbol.toStringTag,{value:"Module"})),Gbe={backToList:"返回定时任务列表",cancel:"取消",cancelQueue:"取消排队",cancelQueueFirst:"请先取消排队",cancelling:"取消中…",closeDrawer:"关闭抽屉",collapse:"收起",connectingRuntime:"正在连接 Runtime…",createScheduledTask:"创建定时任务",createTask:"创建任务",delete:"删除",deleteTask:"删除任务",edit:"编辑",enable:"启用",expand:"展开",pause:"暂停",refresh:"刷新",refreshHistory:"刷新执行历史",rerun:"重新执行",retry:"重试",runNow:"立即执行",saveChanges:"保存更改",saving:"保存中…",stop:"终止执行",stopRun:"终止本次执行",stopRunFirst:"请先终止当前执行",stopping:"终止中…",viewDetails:"查看详情"},Xbe={cancelDescription:"本次 Session 将被取消,后续计划不会暂停。",cancelTitle:"终止本次执行?",deleteDescription:"“{{name}}”及其全部执行历史将被永久删除。",deleteTitle:"删除定时任务?"},Ybe={configuration:"任务配置",nextRun:"下次执行",pageLabel:"定时任务详情",region:"地域",runtime:"运行时",status:"任务状态"},Zbe={createTitle:"创建定时任务",description:"每次触发都会为 Runtime Agent 创建独立 Session。",editTitle:"编辑定时任务"},Jbe={minutesSeconds:"{{minutes}} 分 {{seconds}} 秒",seconds:"{{count}} 秒"},eye={cronExpression:"Cron 表达式",cronHelp:"依次填写分钟、小时、日期、月份、星期。",dailyTime:"每天执行时间",enableAfterCreate:"创建后启用",enableHelp:"启用后会从下一个计划时间开始执行。",name:"任务名称",namePlaceholder:"例如:每日生成运营摘要",noRuntime:"暂无可用 Runtime",prompt:"执行文本",promptPlaceholder:"输入每次执行时发送给 Agent 的固定文本",runAt:"执行时间",runtimeAgent:"运行时智能体",runtimeHelp:"任务始终跟随该 Runtime 当前生效版本。",runtimePlaceholder:"选择 Runtime Agent",schedule:"执行计划",scheduleType:"执行计划类型",timezone:"时区",weekday:"星期"},tye={all:"全部"},nye={description:"每次运行均使用独立 Session,结果与错误会永久保留。",duration:"耗时 {{duration}}",emptyDescription:"任务触发或立即执行后,记录会显示在这里。",emptyTitle:"暂无执行记录",errorDetails:"错误详情",finalAnswer:"最终回答",loadFailed:"无法加载执行历史",loadFailedDescription:"请检查 Studio 服务后重试。",session:"会话",title:"执行历史"},iye={cancelRequested:"已提交终止请求。",created:"任务已创建。",deleted:"任务及其执行历史已删除。",enabled:"任务已启用。",paused:"任务已暂停。",queued:"任务已排队,将在一分钟内开始执行。",requeued:"任务已重新排队,将在一分钟内开始执行。",updated:"任务已更新。"},rye={filterLabel:"定时任务状态筛选",listLabel:"定时任务列表",loadFailed:"无法加载定时任务",loadFailedDescription:"请检查 Studio 服务后重试。",title:"定时任务"},sye={cron:"Cron {{cron}}{{zone}}",daily:"每天 {{time}}{{zone}}",once:"一次 · {{date}}{{zone}}",weekly:"{{weekday}} {{time}}{{zone}}"},oye={daily:"每天",once:"一次性",weekly:"每周"},aye={cancelled:"已取消",enabled:"已启用",failed:"失败",notRun:"尚未执行",paused:"已暂停",pending:"准备中",queued:"已排队",retrying:"自动重试中",running:"执行中",skipped:"已跳过",success:"成功"},lye={cronFields:"Cron 表达式需要包含 5 个字段,例如 0 9 * * *。",nameRequired:"请输入任务名称。",promptRequired:"请输入每次执行时发送给 Agent 的文本。",runtimeAppMissing:"Runtime Agent 未返回可调用的 appName,请确认 Runtime 已就绪且版本兼容。",runtimeRequired:"请选择可用的 Runtime Agent。",timeRequired:"请选择执行时间。"},cye={friday:"周五",monday:"周一",saturday:"周六",sunday:"周日",thursday:"周四",tuesday:"周二",wednesday:"周三"},nQe={actions:Gbe,confirm:Xbe,detail:Ybe,drawer:Zbe,duration:Jbe,fields:eye,filters:tye,history:nye,notices:iye,page:rye,schedule:sye,scheduleTypes:oye,status:aye,validation:lye,weekdays:cye},iQe=Object.freeze(Object.defineProperty({__proto__:null,actions:Gbe,confirm:Xbe,default:nQe,detail:Ybe,drawer:Zbe,duration:Jbe,fields:eye,filters:tye,history:nye,notices:iye,page:rye,schedule:sye,scheduleTypes:oye,status:aye,validation:lye,weekdays:cye},Symbol.toStringTag,{value:"Module"})),uye="快速创建 Agent",dye="Agent 类型",fye="关闭",hye="部署",pye="预览配置",mye="已发起配置包下载",gye="下载失败,请重试",bye="有 {{count}} 处配置需要修改",yye="自定义",vye="自定义{{field}}",xye="输入自定义值",wye="该模型未声明推理强度,使用服务端设置",Oye="请先为该提供方添加模型",kye="请先选择提供方",Sye="请选择",Eye="可选",Cye="默认模型、Agent 预设和权限用于新会话;预设需要存在于部署的 Harness 中",Tye="仅填写环境变量名称,实际密钥由部署环境提供",Aye="read-only 为只读,workspace-write 可写工作区,danger-full-access 允许完整访问且不请求确认",_ye="allowedModels 是子 Agent 可选择的模型列表,启用后至少填写一组提供方和模型",jye="添加自定义模型服务,填写它的端点、协议和模型 ID,支持火山引擎和 BytePlus 等兼容服务",Nye="当前覆盖常用原生设置,其他插件参数与预设文件尚未接入",Rye="查看原生配置文档",Iye="模型提供方 {{index}}",Pye="模型 {{index}}",Dye="添加模型提供方",Mye="移除提供方 {{index}}",Lye="添加模型",$ye="移除模型 {{index}}",Fye="添加可选模型",Bye="移除可选模型 {{index}}",Uye="移除",Qye="填写服务端的模型 ID",zye={provider:"提供方 {{index}}",model:"模型 {{index}}"},Vye={defaults:"会话默认设置",deepseek:"DeepSeek 模型服务",providers:"自定义模型提供方",shell:"命令执行",loop:"工具调用",subagents:"子 Agent 模型选择",search:"DeepSeek 网络搜索"},Hye={id:"提供方 ID",displayName:"显示名称",baseURL:"服务地址",api:"接口协议",apiKeyEnv:"密钥环境变量"},qye={id:"例如 company-models",displayName:"可选,默认使用提供方 ID",baseURL:"https://…/v1",api:"选择接口协议",apiKeyEnv:"例如 MODEL_API_KEY"},Wye={id:"模型 ID",name:"显示名称",contextWindow:"上下文容量",maxTokens:"最大输出容量"},Kye={positive:"请输入大于 0 的数值",integer:"请输入有效的正整数",env:"请输入环境变量名,只能包含字母、数字和下划线,且不能以数字开头",url:"请输入 HTTP 或 HTTPS 地址,不要在地址中包含凭据",option:"请选择受支持的原生选项",required:"请补全此项",duplicate:"该 ID 或模型组合已存在",providerId:"以小写字母开头,可包含小写字母、数字、点、下划线和连字符,不能使用保留 ID",routes:"请至少填写一组完整的提供方和模型",modelPair:"请填写该自定义提供方下的模型 ID",unknownProvider:"请先添加该自定义模型提供方",unknownModel:"请填写该提供方下已配置的模型 ID",timer:"请输入大于 0 且不超过 2147483647 的毫秒数"},Gye={"agent-default-model_provider":"默认提供方","agent-default-model_model":"默认模型","agent-default-model_reasoningEffort":"默认推理强度","agent-presets_default":"默认 Agent 预设",permission_defaultPreset:"默认权限预设","llm-deepseek_apiKeyEnv":"密钥环境变量","llm-deepseek_baseURL":"服务地址","llm-deepseek_thinking":"思考模式","llm-deepseek_reasoningEffort":"推理强度","llm-deepseek_maxTokens":"每次请求的输出上限","llm-deepseek_defaultContextWindow":"默认上下文容量","llm-deepseek_streamIdleTimeoutMs":"流式空闲超时(毫秒)",bash_timeoutMs:"默认执行超时(毫秒)",bash_maxTimeoutMs:"最大执行超时(毫秒)",bash_maxOutputBytes:"输出上限(字节)","agent-loop_maxParallelToolCalls":"并行工具调用上限","subagent-model-selection_enabled":"启用模型选择","web-search-deepseek_apiKeyEnv":"密钥环境变量","web-search-deepseek_baseURL":"搜索服务地址","web-search-deepseek_model":"搜索模型","web-search-deepseek_apiVersion":"接口版本","web-search-deepseek_maxTokens":"搜索输出上限","web-search-deepseek_maxUses":"搜索次数上限"},Xye="取消",Yye="返回创建方式",Zye="DeepSeek Harness 配置",rQe={title:uye,agentType:dye,close:fye,continue:"继续配置",deploy:hye,preview:pye,export:"导出配置",downloaded:mye,downloadFailed:gye,validationSummary:bye,customValue:yye,customField:vye,enterCustomValue:xye,reasoningUnavailable:wye,modelsUnavailable:Oye,selectProviderFirst:kye,selectOption:Sye,optional:Eye,defaultsHelp:Cye,credentialHelp:Tye,permissionHelp:Aye,routesHelp:_ye,providersHelp:jye,coverage:Nye,source:Rye,provider:Iye,model:Pye,addProvider:Dye,removeProvider:Mye,addModel:Lye,removeModel:$ye,addRoute:Fye,removeRoute:Bye,remove:Uye,modelIdPlaceholder:Qye,route:zye,sections:Vye,providerFields:Hye,providerPlaceholders:qye,modelFields:Wye,errors:Kye,fields:Gye,cancel:Xye,back:Yye,pageTitle:Zye},sQe=Object.freeze(Object.defineProperty({__proto__:null,addModel:Lye,addProvider:Dye,addRoute:Fye,agentType:dye,back:Yye,cancel:Xye,close:fye,coverage:Nye,credentialHelp:Tye,customField:vye,customValue:yye,default:rQe,defaultsHelp:Cye,deploy:hye,downloadFailed:gye,downloaded:mye,enterCustomValue:xye,errors:Kye,fields:Gye,model:Pye,modelFields:Wye,modelIdPlaceholder:Qye,modelsUnavailable:Oye,optional:Eye,pageTitle:Zye,permissionHelp:Aye,preview:pye,provider:Iye,providerFields:Hye,providerPlaceholders:qye,providersHelp:jye,reasoningUnavailable:wye,remove:Uye,removeModel:$ye,removeProvider:Mye,removeRoute:Bye,route:zye,routesHelp:_ye,sections:Vye,selectOption:Sye,selectProviderFirst:kye,source:Rye,title:uye,validationSummary:bye},Symbol.toStringTag,{value:"Module"})),Jye="问题反馈",e0e="问题描述",t0e="常见问题",n0e="取消",i0e="完成",r0e="提交反馈",s0e="正在上报…",o0e={title:"上报成功,感谢您的反馈",description:"AgentKit 团队会尽快查看您提交的问题。"},a0e={close:"关闭问题反馈",intro:"请选择遇到的问题,也可以补充具体表现。",privacy:"您的对话数据将会上报到 AgentKit 团队,请注意隐私保护。",descriptionPlaceholder:"请描述问题发生时的表现(选填)",issues:{slow:"执行速度慢",crash:"运行崩溃",incorrect:"结果不准确",tool_error:"工具调用失败",other:"其他问题"}},l0e={description:"告诉我们您在使用 AgentKit Studio 时遇到的问题。",module:"所属模块",modules:{conversation:"对话",agents:"智能体",applications:"自动化",search:"搜索",other:"其他"},commonIssuesMultiple:"常见问题(可多选)",issueTypes:"问题类型",issues:{page_slow:"页面加载慢",feature_unavailable:"功能无法使用",display_error:"页面显示异常",no_response:"操作无响应",other:"其他问题"},descriptionPlaceholder:"请描述问题发生时的页面、操作和表现",quickAdd:"快捷补充",suggestionsLabel:"问题描述推荐",suggestions:{noResponse:"点击后没有反应",loading:"页面一直处于加载状态",incomplete:"部分内容显示不完整",error:"操作后出现错误提示"},privacy:"您的数据将会上报到 AgentKit 团队,请注意隐私保护。"},oQe={title:Jye,descriptionLabel:e0e,commonIssues:t0e,cancel:n0e,done:i0e,submit:r0e,submitting:s0e,success:o0e,dialog:a0e,page:l0e},aQe=Object.freeze(Object.defineProperty({__proto__:null,cancel:n0e,commonIssues:t0e,default:oQe,descriptionLabel:e0e,dialog:a0e,done:i0e,page:l0e,submit:r0e,submitting:s0e,success:o0e,title:Jye},Symbol.toStringTag,{value:"Module"})),c0e={back:"返回",close:"关闭"},u0e={title:"优化迁移项目",closeAria:"关闭优化窗口"},d0e={title:"已迁移项目",description:"管理迁移后的源码版本,也可以选择任一版本继续优化。",libraryTitle:"项目与版本",libraryDescription:"查看、下载、部署或对比源码版本,也可以基于任一版本继续优化。",emptyTitle:"还没有已迁移的项目",emptyDescription:"迁移完成后,源码会自动保存在这里。"},f0e={langchain:"LangChain",langgraph:"LangGraph",adk:"Google ADK",strands:"Strands",agentcore:"AgentCore",dify:"Dify",any:"Any(通用迁移)"},h0e={awaitingUpload:"待上传",analyzing:"分析中",needsInput:"待补充",analysisReady:"待确认",migrating:"迁移中",validating:"校验中",packaging:"打包中",succeeded:"已完成",succeededWithWarnings:"已完成,有提示",partial:"部分完成",failed:"失败",cancelled:"已终止",expired:"已过期"},p0e={evaluationPending:"待评测",evaluationRunning:"评测中",waitingDataset:"待保存评测用例",waitingEnvironment:"待补充环境变量",evaluationFailed:"迁移完成,评测未完成",evaluationBlocked:"迁移完成,评测待处理",evaluationCancelled:"迁移完成,评测已取消",resultUnavailable:"结果不可用",environmentExpired:"环境已过期"},m0e={partialReady:"迁移产物已生成,但交付不完整,请查看迁移提示。",readyWithWarnings:"迁移产物已生成,请查看迁移提示。",ready:"迁移产物已生成。"},g0e={passed:"产物校验通过",failed:"产物校验未通过",degraded:"产物校验未完成"},b0e={session:"创建迁移环境",upload:"上传项目",analysis:"分析项目"},y0e={agentNameRequired:"请输入 Agent 名称",agentNameInvalid:"Agent 名称必须为 1-63 位,只能包含小写字母、数字和连字符,且必须以字母或数字开头和结尾"},v0e={seconds:"{{seconds}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒"},x0e={savedUnaffected:"已保存项目不受影响",savingUnaffected:"源码正在保存,完成后不受环境期限影响",activeDetail:"到期后任务记录和临时产物将无法访问",oneHour:"临时迁移环境保留 1 小时",ended:"临时迁移环境已结束",savedAvailable:"已保存项目仍可查看、下载、部署或优化",unavailable:"任务记录和临时产物已无法访问",countdown:"临时迁移环境将在 {{minutes}} 分 {{seconds}} 秒后结束",expiredSavedMessage:"临时迁移环境已结束,已保存项目不受影响。",expiredMessage:"临时迁移环境已结束,任务记录和临时产物无法继续访问。"},w0e={recommended:"建议迁移方式",scope:"迁移范围",excluded:"不在本次范围",viewEvidence:"查看分析证据",viewAssumptions:"查看关键假设",viewSourceEvidence:"查看源码证据"},O0e={ariaLabel:"Codex 执行动态",title:"Codex 执行动态",startingAnalysis:"Codex 正在开始分析…",startingMigration:"Codex 正在开始迁移…",loadError:"暂时无法读取 Codex 执行动态,不影响当前任务。"},k0e={title:"迁移产物",fileTooLarge:"该文件超过 2 MiB,请下载完整产物后查看。",unsupportedPreview:"该文件不支持在线预览,请下载完整产物后查看。",filesAria:"迁移产物文件",searchAria:"搜索产物文件",searchPlaceholder:"搜索文件",limit:"仅展示前 {{count}} 项,请搜索具体文件。",noSelection:"未选择文件",noPreview:"暂无可预览文件。",loadingFile:"正在读取产物文件…",startupFile:"启动文件",fileCountLabel:"文件数",saved:"源码已保存,可继续查看、下载、部署或优化。",saving:"产物已生成,正在保存源码版本。",deployReady:"产物可预览、下载和部署,正在等待源码保存状态。",deployUnavailable:"产物可预览和下载,但当前交付状态不支持部署。",viewProjects:"查看已迁移项目",downloading:"下载中…",downloadZip:"下载 ZIP",deployTitle:"部署迁移产物",deployUnavailableTitle:"当前交付状态不支持部署",deployRuntime:"部署到 Runtime",fileCount:"{{count}} 个文件",startup:"启动文件 {{module}}",loading:"正在读取迁移产物…"},S0e={retiring:"即将下线",currentDefault:"当前默认模型",loadError:"加载模型列表失败",label:"模型",placeholder:"选择模型"},E0e={zipOnly:"请选择 .zip 格式的本地项目文件。",invalidName:"ZIP 文件名无效,请重命名后重新选择。",tooLarge:"项目 ZIP 不能超过 {{size}}。",empty:"项目 ZIP 不能为空。",removeAria:"移除项目 ZIP",reselectPrompt:"重新选择项目 ZIP",selectPrompt:"选择或拖入本地项目 ZIP",reselect:"重新选择",selectZip:"选择 ZIP",continue:"继续上传",start:"上传并分析",inputAria:"选择本地项目 ZIP",retention:"临时迁移环境从创建完成起保留 1 小时;保存成功的源码版本不受影响。",uploading:"上传中…",sizeHint:"支持项目 ZIP,最大 {{size}}"},C0e={requiredPlaceholder:"请输入 {{key}}",optionalPlaceholder:"可选:{{key}}",notReady:"迁移产物尚未准备完成。",back:"返回迁移结果"},T0e={backToAddAgent:"返回添加 Agent",title:"从存量迁移",newMigration:"新建迁移",recent:"最近迁移",loadingSessions:"正在读取迁移会话…",noSessions:"暂无迁移会话",heading:"迁移存量 Agent 项目",intro:"上传本地项目 ZIP,Codex 将先进行只读分析,再由你确认迁移方式。",backToHome:"迁移首页",navigation:"迁移导航",showMore:"查看更多",showLess:"收起",projectName:"项目名称",status:"状态",createdAt:"创建时间",actions:"操作",openTask:"查看迁移 {{name}}",continueTask:"继续",viewTask:"查看"},A0e={stop:"终止迁移",stopping:"正在终止…",cancel:"取消",reload:"重新读取",refreshStatus:"刷新状态"},_0e={unavailable:"迁移能力暂不可用",defaultReason:"Dev Sandbox 暂不可用,请联系管理员检查配置。"},j0e={creatingSandbox:"正在创建 Dev Sandbox",initializing:"正在初始化迁移工作目录,并检查 AgentKit CLI、Codex 和迁移能力。环境就绪后将自动上传项目。",elapsed:"已等待 {{duration}}",uploadThenAnalyze:"ZIP 上传完成后将自动开始只读分析。",analyzing:"Codex 正在识别框架、入口和迁移边界,不会执行实际迁移。",migrationLocked:"迁移执行中不能修改附件或迁移方式。你可以等待当前任务结束,或主动终止。",analysisPaused:"只读分析已暂停。请仅回答下面列出的问题,提交后会在同一迁移环境中重新分析,不会开始实际迁移。",analysisComplete:"只读分析已完成。请检查建议,并确认最终迁移方式。",awaitingUpload:"迁移环境已创建,请重新选择本地 ZIP 继续上传。",expiredTitle:"迁移环境已过期",expiredDescription:"迁移内容和产物已无法预览、下载或部署。如已完成 Runtime 部署,可返回智能体页面继续使用。",unsupportedTitle:"当前 ZIP 暂时无法迁移",unsupportedHint:"请按提示整理项目后,新建迁移并重新上传。",failedTitle:"迁移未完成",cancelled:"当前迁移已终止。你可以新建迁移并重新上传项目。"},N0e={ariaLabel:"补充项目分析信息",title:"补充分析所需信息",description:"附件保持锁定,提交后仅继续只读分析",submitting:"正在继续分析…",submit:"提交并继续分析"},R0e={ariaLabel:"确认迁移方式",title:"确认迁移方式",description:"确认后才会执行实际迁移",framework:"迁移方式",frameworkPlaceholder:"选择迁移方式",agentName:"Agent 名称",entry:"项目入口",entryPlaceholder:"选择项目入口",entryExample:"例如 agent.py:agent",consent:"点击“确认并开始迁移”即确认上述迁移范围、排除项和关键假设。",starting:"正在启动迁移…",start:"确认并开始迁移"},I0e={setup:{title:"迁移效果评测",description:"迁移完成后自动执行评测用例。",on:"已开启",off:"未开启",unavailable:"当前环境暂不支持迁移效果评测。",casesTitle:"评测用例",casesDescription:"至少添加一个用例。期望结果和评测标准可选。",configuredSummary:"{{count}} 个用例 · {{preset}} · {{dimensions}}",incompleteSummary:"{{count}} 个用例待填写 · {{preset}} · {{dimensions}}",dimensionSummary:"{{count}} 个维度",editSettings:"编辑设置",viewSettings:"查看设置",lockedTitle:"评测用例",lockedDescription:"上传开始后不可修改。",closeAria:"关闭评测设置",done:"完成配置",close:"关闭"},tabs:{label:"迁移任务内容",migration:"迁移",evaluation:"效果评测",waitingMigration:"等待迁移",waitingConfiguration:"待配置",running:"评测中",completed:"已完成",issue:"需处理"},bulk:{open:"批量粘贴",label:"每行输入一个用例",placeholder:`帮我查询今天的订单状态
+把结果整理成三点`,preview:"将添加 {{count}} 个用例",confirm:"添加用例"},case:{title:"用例 {{index}}",add:"添加用例",moveUp:"上移用例 {{index}}",moveDown:"下移用例 {{index}}",copy:"复制",delete:"删除",userInput:"用户输入",userInputPlaceholder:"例如:请帮我查询今天的订单状态",expectedOutcome:"期望结果(可选)",expectedOutcomePlaceholder:"描述希望 Agent 完成什么,不要求逐字一致",criteria:"必须满足的要求(可选)",addCriterion:"添加要求",criterionLabel:"必须满足的要求 {{index}}",criterionPlaceholder:"例如:必须包含订单号和当前状态",removeCriterion:"删除要求 {{index}}"},advanced:{title:"高级设置",standard:"标准评测",standardDescription:"默认包含语义一致性、输出约束、工作流与工具一致性 3 个维度,适合多数迁移。",custom:"自定义维度",customDescription:"按业务风险选择一个或多个评测维度。",lockedDescription:"项目开始上传后,评测方式和维度不再修改。"},dimension:{semantic_fidelity:"语义一致性",output_contract:"输出约束",workflow_tool_fidelity:"工作流与工具一致性",context_memory_fidelity:"上下文与记忆一致性",boundary_error_fidelity:"边界与异常一致性",safety_refusal_fidelity:"安全与拒答一致性"},dimensionDescription:{semantic_fidelity:"检查意图理解、结论和关键事实是否保持一致。",output_contract:"检查字段、结构、语言和格式约束是否保持。",workflow_tool_fidelity:"检查可观察的工作流分支和工具行为是否保持。",context_memory_fidelity:"检查可验证的多轮上下文和记忆行为。",boundary_error_fidelity:"检查无效输入、信息缺失和依赖失败时的行为。",safety_refusal_fidelity:"检查已有授权、拒答和敏感信息边界是否保持。"},validation:{caseCount:"请保留 1–{{count}} 个用例。",dimensionRequired:"请至少选择一个评测维度。",userInputRequired:"请输入用例内容。",userInputBytes:"单个用例不能超过 32 KiB。",expectedOutcomeBytes:"期望结果不能超过 16 KiB。",criteriaCount:"单个用例最多包含 {{count}} 条要求。",criterionRequired:"要求不能为空。",criterionBytes:"单条要求不能超过 2 KiB。",datasetBytes:"全部评测用例不能超过 10 MiB。"},dataset:{invalidLockResponse:"服务未确认评测用例已保存,请重试。",loadingSettings:"正在读取评测设置…",loadSettingsFailed:"评测设置读取失败。",retryLoadSettings:"重新读取",missing:"未找到已保存的评测用例,请重新填写并保存。",saveWarning:"评测用例暂未保存,不影响迁移。",retrySave:"重新保存评测用例",saving:"正在保存…"},state:{disabled:"未开启评测",waiting_dataset:"等待填写评测用例",pending:"迁移完成后自动开始评测",preparing:"正在准备评测环境…",waiting_environment:"需要补充运行所需的环境变量",deploying:"正在部署临时 Runtime…",executing:"正在执行评测用例…",judging:"正在执行评测分析…",aggregating:"正在汇总评测结果…",completed:"评测已完成",failed:"评测未完成",blocked:"评测需要处理后才能继续",cancelled:"评测已取消"},progress:{label:"迁移与迁移效果评测进度",migration:"迁移",evaluation:"迁移效果评测",notStarted:"未开始",inProgress:"进行中",completed:"完成",waitingConfiguration:"等待配置",issue:"有问题"},environment:{description:"填写临时 Runtime 所需的环境变量。",security:"仅用于本次评测。",optional:"可选",submit:"提交并继续评测",submitting:"正在提交…"},execution:{preparing:"准备评测",preparingDetail:"校验迁移产物和 {{count}} 个评测用例",deploying:"启动 Runtime",deployingDetail:"准备 {{runtime}}",runtimeFallback:"隔离运行环境",executing:"执行用例",executingDetail:"执行 {{count}} 个用例并记录输出",judging:"执行评测分析",judgingDetail:"评测 {{cases}} 个用例 · {{dimensions}} 个维度",aggregating:"生成评测报告",aggregatingDetail:"汇总评分与证据,生成 HTML 报告",waiting:"等待中",running:"执行中",failed:"失败",complete:"已完成"},result:{title:"执行进度",attempt:"第 {{attempt}} 次评测",pending:"等待迁移完成",retry:"重新评测",retrying:"正在重试…",failureStage:"失败阶段",errorCode:"错误码",taskId:"任务 ID",diagnosticAttempt:"评测轮次",runtime:"Runtime",errorDetails:"错误详情",diagnosticField:"{{label}}:{{value}}",diagnosticHeading:"{{label}}:",loadingReport:"正在读取评测报告…",reportTitle:"HTML 评测报告",reportHtmlDescription:"查看或下载 HTML 报告。",viewReport:"查看报告",reportDrawerDescription:"评分、差异与证据",closeReport:"关闭",closeReportAria:"关闭评测报告",reportPreviewTitle:"迁移效果评测报告预览",reportSummary:"评测摘要",reportVersion:"评测集 {{version}} · Prompt v{{prompt}}",downloadReport:"下载完整报告",downloadingReport:"正在下载…",overallScore:"综合一致性",scoreScale:"0–100;证据不足时显示 N/A",evidenceCoverage:"证据覆盖率",coverageDetail:"{{scored}} / {{total}} 个维度有证据",executionSuccess:"执行成功率",executionDetail:"{{succeeded}} / {{total}} 个用例完成",naCount:"N/A 数量",naDescription:"证据不足,不计入分数",gapDescription:"迁移差距说明",lowestScoringCases:"低分用例",executionFailures:"执行异常",criticalEvidence:"Critical 证据",limitations:"评测限制",viewEvidence:"查看 {{count}} 个用例的结果与证据",outputTruncated:"输出过长,已截断",executionState:{succeeded:"执行完成",failed:"执行异常"},severityLabel:"严重度:{{severity}}",severity:{none:"无",low:"低",medium:"中",high:"高",critical:"Critical",unknown:"未知"},evidenceSource:{user_reference:"期望结果",user_criteria:"填写的要求",source_contract:"源项目约束",observed_output:"实际输出",runtime_observation:"Runtime 原始数据",deterministic_assertion:"确定性断言"},listSeparator:"、"}},P0e={closeAria:"关闭错误提示",loadFailed:"无法读取迁移数据,请重试。",refreshFailed:"无法刷新迁移状态,请重试。"},D0e={title:"终止当前迁移?",description:"终止后,当前分析或迁移进程将停止,已执行的步骤不会继续。"},lQe={common:c0e,optimization:u0e,projects:d0e,framework:f0e,state:h0e,historyStatus:p0e,task:m0e,verification:g0e,transfer:b0e,validation:y0e,duration:v0e,expiry:x0e,analysis:w0e,activity:O0e,artifact:k0e,model:S0e,upload:E0e,deployment:C0e,workspace:T0e,actions:A0e,capability:_0e,conversation:j0e,questions:N0e,confirmation:R0e,evaluation:I0e,errors:P0e,stopDialog:D0e},cQe=Object.freeze(Object.defineProperty({__proto__:null,actions:A0e,activity:O0e,analysis:w0e,artifact:k0e,capability:_0e,common:c0e,confirmation:R0e,conversation:j0e,default:lQe,deployment:C0e,duration:v0e,errors:P0e,evaluation:I0e,expiry:x0e,framework:f0e,historyStatus:p0e,model:S0e,optimization:u0e,projects:d0e,questions:N0e,state:h0e,stopDialog:D0e,task:m0e,transfer:b0e,upload:E0e,validation:y0e,verification:g0e,workspace:T0e},Symbol.toStringTag,{value:"Module"})),M0e={loading:"加载中…",searchLabel:"搜索{{label}}",searchPlaceholder:"搜索{{label}}",retry:"重试",noMatches:"没有匹配项",noOptions:"暂无可选项",selection:"{{label}}:{{value}}"},L0e={badge:"焕然一新",view:"查看新特性",title:"本次更新",defaultNotes:{multiRegion:"多地域智能体:并行加载北京与上海 Runtime,列表下滑即可继续加载。",switchAgent:"会话内切换:在输入框旁选择智能体,并直接开启一段新会话。",visualCanvas:"可视化执行画布:通过横向画布查看多智能体结构,并支持全屏浏览。"}},$0e={label:"新会话模式",agent:"智能体",skill:"技能定制",video:"视频创作"},F0e={select:"选择新会话模式",agent:{label:"Agent",description:"与当前选择的 Agent 对话"},builtin:{label:"内置智能体",description:"使用平台提供的智能体"},codex:{label:"Codex 智能体",description:"在沙箱中执行任务"},deepseekHarness:{label:"DeepSeek Harness",description:"打开 DeepSeek Harness 工作区"},arkClaw:"ArkClaw",hermes:"Hermes 智能体",checking:"正在检查配置",notConfigured:"管理员未配置",unavailable:"暂不可用"},B0e={select:"选择智能体",typesLabel:"智能体类型",listLabel:"{{type}}列表",types:{agent:"智能体",general:"通用智能体",codex:"Codex 智能体",deepseekHarness:"DeepSeek Harness",openclaw:"OpenClaw 智能体",hermes:"Hermes 智能体"},loading:"正在加载智能体",reload:"重新加载",empty:"暂无{{type}}",emptyLocal:"暂无本地智能体",emptyGeneral:"暂无通用智能体",createHint:"请前往智能体页创建",localHint:"请检查当前 Studio 启动目录",waking:"正在唤醒",opening:"正在打开",connecting:"正在连接",loadingMore:"加载中",loadMore:"加载更多",runtimeTimeout:"加载智能体超时(15 秒),请检查网络或 Runtime 服务后重试",loadGeneral:"加载通用智能体",loadType:"加载 {{type}}",connectGeneral:"连接通用智能体",openLocal:"打开本地智能体",openType:"打开 {{type}}",wakingHint:"正在唤醒智能体,可能需要一些时间。"},U0e={spaceAria:"技能空间",configuration:"技能定制配置",actions:{create:"技能生成",optimize:"技能优化"},selectAction:"选择技能定制方式",actionList:"技能定制方式",style:"风格",selectStyle:"选择风格",model:"模型",selectModel:"选择模型",styles:{concise:"简洁实用",strict:"严谨稳健",tutorial:"教程友好",automation:"自动化优先"},modelLoadFailed:"模型配置加载失败",spaceLoadFailed:"Skill Space 加载失败",skillLoadFailed:"Skill 加载失败",unnamedSpace:"未命名 Skill Space",space:"技能空间",select:"选择 Skill",selectAria:"选择 Skill:{{skill}}",loadingSpaces:"正在加载 Skill Space",reload:"重新加载",emptySpaces:"暂无 Skill Space",skillList:"{{space}} Skill 列表",loadingSkills:"正在加载 Skill",emptySkills:"暂无 Skill"},Q0e={modes:{auto:"自动识别",text_to_video:"文生视频",reference_to_video:"参考素材生视频",video_editing:"视频编辑",video_extension:"视频续写",first_last_frame:"首尾帧生成"},taskNames:{auto:"视频生成",text_to_video:"文生视频",reference_to_video:"参考素材生视频",video_editing:"视频编辑",video_extension:"视频续写",first_last_frame:"首尾帧生成"},controls:{label:"视频创作配置",aspectRatio:"比例",selectAspectRatio:"选择比例",resolution:"清晰度",selectResolution:"选择清晰度",duration:"时长",durationShort:"{{count}} 秒",durationAria:"视频时长:{{count}} 秒",lastFrame:"尾帧",lastFrameHelper:"添加视频结束画面",assistImage:"辅助图片",referenceImage:"参考图片",assistImageHelper:"用于补充画面参考",imageHelper:"支持常见图片格式",referenceVideo:"参考视频",videoHelper:"支持常见视频格式",optional:"可选",replace:"更换",add:"添加",upload:"上传{{label}}",replaceFile:"更换{{label}}:{{name}}",removeFile:"移除{{label}} {{name}}",storageUnavailable:"管理员未配置持久化存储",loadingEnhancer:"正在加载增强模型",enhancerHint:"使用 {{model}} 模型进行意图识别和提示词增强",enhancerUnavailable:"增强模型不可用"},task:{title:"视频生成任务",closeAria:"关闭视频生成任务弹窗",progressAria:"视频生成进度",optimizedPrompt:"优化后的提示词",processingAria:"{{task}}处理进度",waitingAria:"{{status}},已等待{{elapsed}}",elapsed:"已等待 {{elapsed}}",previewAria:"生成结果预览",close:"关闭",download:"下载视频",retryOptimization:"重试提示词优化",retryGeneration:"重试视频生成",providerQueued:"等待模型调度",providerRunning:"模型生成中",providerSubmitting:"正在提交任务",queuedHint:"任务已提交,模型开始处理后状态会自动更新",runningHint:"这可能持续数分钟,完成后将在这里显示视频预览",backgroundHint:"可以关闭弹窗,任务会继续在后台运行",successHint:"视频已生成,可预览或下载",activationHint:"请先在模型控制台开通服务,再重试生成",retryHint:"修正问题后可重试当前步骤",steps:{optimizationFailed:"提示词优化失败",optimizationDone:"提示词优化完成",optimizationActive:"提示词优化中",generationDone:"{{task}}已完成",generationFailed:"{{task}}失败",generationQueued:"{{task}}排队中",generationRunning:"{{task}}生成中",generationActive:"{{task}}进行中",generationPending:"等待视频生成",generationComplete:"视频生成完成"},elapsedHours:"{{hours}}小时{{minutes}}分",elapsedMinutes:"{{minutes}}分{{seconds}}秒",elapsedSeconds:"{{seconds}}秒"}},z0e={compactSelect:M0e,featureNotice:L0e,workspace:$0e,mode:F0e,agentPicker:B0e,skill:U0e,video:Q0e},uQe=Object.freeze(Object.defineProperty({__proto__:null,agentPicker:B0e,compactSelect:M0e,default:z0e,featureNotice:L0e,mode:F0e,skill:U0e,video:Q0e,workspace:$0e},Symbol.toStringTag,{value:"Module"})),V0e="审核中心",H0e="审核资源类型",q0e="仅管理员可以访问审核中心",W0e="搜索申请名称、提交人或版本",K0e="审核状态",G0e="{{count}} 条待审核",X0e="共 {{count}} 条申请",Y0e={skill:"技能",agent:"智能体"},Z0e={all:"全部状态",pending:"待审核",approved:"已通过",returned:"已退回",approving:"发布中"},J0e={application:"申请名称",submitter:"提交人",version:"版本",submittedAt:"提交时间",status:"状态",actions:"操作"},eve={details:"详情",detailsFor:"查看 {{name}} 的申请详情",approve:"通过",approveFor:"通过 {{name}} 的申请",return:"退回",returnFor:"退回 {{name}} 的申请",close:"关闭",backToDetails:"返回详情",confirmApprove:"确认通过",confirmReturn:"确认退回",clearFilters:"清除筛选",refresh:"刷新",cancel:"取消",resumeApproval:"继续发布"},tve={title:"暂无审核申请",description:"提交的审核申请会显示在这里",filteredTitle:"没有匹配的申请",filteredDescription:"试试其他关键词,或调整审核状态"},nve={title:"申请详情",sections:"申请详情内容",overview:"申请信息",files:"提交文件 · {{count}}",requestType:"申请类型",update:"版本更新",firstRelease:"首次发布",source:"来源",source_skill:"{{name}}的个人技能空间",source_agent:"{{name}}的开发环境",destination:"发布目标",destination_skill:"企业共享技能空间",destination_agent:"全员共享智能体",region:"区域",visibility:"发布后可见范围",shared:"全员可见",description:"功能说明",changes:"本次提交说明",example:"使用示例",history:"审核记录",submitted:"{{name}}提交申请",versionFixed:"仅审核本次提交的版本",instructions:"使用说明",filesTab:"提交文件",filesFailed:"加载提交文件失败",unknownAuthor:"未知申请人",reviewer:"审批人",reviewedAt:"审批时间",approved:"{{name}}通过申请",returned:"{{name}}退回申请",unknownReviewer:"未知审批人",approvedBy:"通过人",returnedBy:"退回人",comment:"审批评论",result:"审批结果",noHistory:"此技能尚未提交审核",pendingHint:"等待管理员审核",approvingHint:"管理员已确认通过,正在发布到企业共享空间",approving:"{{name}}确认通过,等待完成发布"},ive={failed:"待审核空间暂不可用",retry:"重试"},rve={approveTitle:"通过申请",returnTitle:"退回申请",approveDescription:"通过后,{{name}} 的 {{version}} 版本将在企业共享空间中向全员公开",returnDescription:"退回 {{name}} 的 {{version}} 版本,并向申请人说明原因",reason:"退回理由",reasonRequired:"请填写退回理由",reasonHelp:"最多 256 个字符,申请人可以看到此理由",saving:"处理中…",failed:"审批失败,请重试",approved:"{{name}} 已通过并公开",returned:"{{name}} 已退回",comment:"评论(可选)",commentHelp:"最多 256 个字符,申请人可以看到此评论"},sve={title:"AI 评分",points:"{{score}} 分",insufficient:"依据不足",status:{unscored:"尚未评分",not_requested:"尚未评分",queued:"等待评分",running:"评分中",completed:"已评分",failed:"评分失败"},loading:"加载评分…",starting:"正在提交评分…",loadFailed:"加载评分失败",retryFailed:"提交评分失败",failed:"评分未完成,请管理员重试",retry:"重新评分",start:"开始评分",reload:"重新加载",download:"下载 JSON",expand:"展开",collapse:"收起",hint:"评分针对本次提交版本,供人工审批参考",dimensions:{safety:"安全性",usability:"易用性",completeness:"完整性",reliability:"可靠性",maintainability:"可维护性"},risks:"风险提示",suggestions:"改进建议",model:"评分模型",rubric:"评分标准版本",time:"评分时间",severity:{low:"低风险",medium:"中风险",high:"高风险",critical:"严重风险"},coverage:"评审范围",coverageCount:"已评审 {{included}} / {{total}} 个文件",coverageIncomplete:"部分内容未纳入评审,评分依据不完整",omittedFile:"未评审 {{path}}:{{reason}}",truncatedFile:"仅评审部分内容 {{path}}:{{reason}}",originalError:"云端原始错误"},dQe={title:V0e,category:H0e,adminOnly:q0e,search:W0e,filterStatus:K0e,pendingCount:G0e,total:X0e,kind:Y0e,status:Z0e,columns:J0e,actions:eve,empty:tve,detail:nve,space:ive,decision:rve,score:sve},fQe=Object.freeze(Object.defineProperty({__proto__:null,actions:eve,adminOnly:q0e,category:H0e,columns:J0e,decision:rve,default:dQe,detail:nve,empty:tve,filterStatus:K0e,kind:Y0e,pendingCount:G0e,score:sve,search:W0e,space:ive,status:Z0e,title:V0e,total:X0e},Symbol.toStringTag,{value:"Module"})),ove={cancel:"取消",close:"关闭",retry:"重试",tryAgain:"重新尝试",closeDialog:"关闭{{title}}",agentFallback:"{{agent}} 智能体",unknownSource:"未知来源"},ave={terminalTitle:"终端",browserTitle:"沙箱浏览器",terminalSubtitle:"连接当前 AgentKit Session 的交互式终端",browserSubtitle:"在当前 AgentKit Session 中查看与操作浏览器",connecting:"正在连接…",connected:"已连接",notConnected:"尚未连接",opening:"正在打开 {{title}}",connectingSession:"工具正在连接当前 AgentKit Session。",openFailed:"{{title}} 打开失败"},lve={title:"恢复 Codex 对话",subtitle:"选择当前 Sandbox Session 中最近更新的 Thread",loading:"正在读取历史对话",loadFailed:"历史对话读取失败",empty:"暂无可恢复的对话"},cve={title:"Codex 权限",subtitle:"设置会保存到当前 Sandbox Session,并同步到其中的所有 Thread",sandboxMode:"沙箱模式",approvalPolicy:"审批策略",approvalMethod:"审批方式",networkAccess:"允许网络访问",networkAccessHelp:"控制 workspace-write 与只读模式中的外部网络访问。",fullAccessWarning:"完全访问会关闭文件系统与网络隔离,请只在可信任务中使用。",save:"保存权限",sandboxChoices:{readOnly:{label:"只读",detail:"允许读取文件,不允许写入工作空间。"},workspaceWrite:{label:"工作区写入",detail:"允许在当前工作空间内读取与修改文件。"},fullAccess:{label:"完全访问",detail:"不启用沙箱隔离,适合明确可信的任务。"}},approvalChoices:{untrusted:{label:"仅不可信命令",detail:"只对 Codex 判断为不可信的操作发起审批。"},onRequest:{label:"按需审批",detail:"Codex 可在必要时请求你确认命令或文件修改。"},never:{label:"不审批",detail:"Codex 不会暂停并请求人工批准。"}},reviewerChoices:{user:{label:"由我审批",detail:"审批请求会显示在 Studio 中,由你决定。"},autoReview:{label:"自动审查",detail:"使用 Codex 自动审查流程处理审批请求。"}}},uve={title:"工作空间",subtitle:"选择当前 Codex Thread 执行命令与修改文件的目录",absolutePath:"绝对路径",browse:"浏览",parent:"上一级",empty:"当前目录没有子目录",locked:"当前对话已经开始,工作空间已锁定。新建 Sandbox 会话后可重新选择。",useDirectory:"使用此目录"},dve={fileTitle:"允许修改文件?",commandTitle:"允许执行命令?",subtitle:"Codex 正在等待你的决定",workingDirectory:"执行目录",decline:"拒绝",acceptOnce:"仅本次允许",acceptSession:"本会话允许"},fve={availableSkills:"可用 Skills",selectModel:"选择模型",commands:"Codex 快捷命令",currentModel:"当前:{{model}}",loadingSkills:"正在发现当前工作区的 Skills…",loadingModels:"正在读取模型…",noSkillMatches:"当前工作区没有匹配的 Skill",noModelMatches:"没有匹配模型,也可以直接输入模型 ID",noCommandMatches:"没有匹配的快捷命令",skillFallback:"加载并执行该 Skill",add:"添加",uploadImage:"上传图片",uploadDocument:"上传文档或 PDF",uploadVideo:"上传视频",openTerminal:"进入终端",viewBrowser:"查看浏览器",permissions:"Codex 权限",workspaceLocked:"对话已开始,工作空间已锁定",selectWorkspace:"选择工作空间",workspace:"Codex 工作空间",endpointCopied:"Endpoint 已复制",copyEndpoint:"复制 Sandbox Endpoint",continuePlaceholder:"继续说明你想实现或调整的内容",messagePlaceholder:"向 AgentKit 沙箱发送消息,输入 / 查看命令,输入 $ 调用 Skill…",stop:"停止生成",send:"发送",stopping:"正在确认停止…",resume:"恢复任务",steer:"追加要求",steerPlaceholder:"可继续追加要求,或随时停止任务…"},hve={defaultName:"我的智能体",namedDefault:"我的 {{agent}}",creatingTitle:"正在创建 {{agent}} 智能体",failedTitle:"启动失败",createTitle:"创建 {{agent}} 智能体",fallbackError:"AgentKit 沙箱初始化失败,请稍后重新尝试。",creatingDescription:"正在创建并等待 {{agent}} 智能体就绪,这通常需要半分钟",name:"智能体名称",storageSize:"存储大小",storageHelp:"数据将持久化保存,可设置 {{min}}–{{max}} GiB。",persistent:"持久化",persistenceUnsupported:"当前环境不支持快照持久化",persistentHelp:"保留智能体数据,后续可继续使用。",temporaryHelp:"智能体将在 8 小时后清空",cancelCreation:"取消创建",confirm:"确认创建",retry:"重新尝试"},pve={activeAria:"Codex 智能体会话已开启",openAria:"开启 Codex 智能体会话",active:"Codex 智能体会话中",entry:"灵光一现",exit:"退出当前智能体",expired:"已到期",remainingHours:"剩余 {{hours}} 小时 {{minutes}} 分钟",remainingMinutes:"剩余 {{minutes}} 分钟",expiryWarning:"远端开发环境最长保留 8 小时,将于 {{expiry}} 到期({{remaining}});到期后清除对话和文件。",usingAgent:"当前您在使用 {{agent}} 智能体",activityAria:"Sandbox 操作记录",activity:"操作记录",tokenUsageAria:"Codex Token 用量",tokens:"{{label}}:{{value}} tokens",tokenLabels:{total:"总计",input:"输入",cachedInput:"缓存输入",output:"输出",reasoningOutput:"推理输出"}},mve={back:"返回智能体列表",subtitle:"{{agent}} 智能体详情",type:"智能体类型",status:"状态",createdBy:"创建人",snapshotStatus:"快照状态",toolType:"工具类型",createdAt:"创建时间",snapshotReason:"快照原因",expiresAt:"过期时间",snapshotId:"快照 ID",sessionId:"会话 ID",sourceSessionId:"来源 Session ID",delete:"删除智能体",waking:"唤醒中…",opening:"打开中…",wake:"唤醒智能体",open:"打开智能体",deleteTitle:"删除智能体?",deleteDescription:"将删除“{{name}}”及其保存的数据,此操作无法撤销。",deleting:"删除中…",confirmDelete:"确认删除",sleepingHint:"该智能体已休眠,进入时需要唤醒,可能需要一些时间。",wakingHint:"正在唤醒智能体,可能需要一些时间。",agentId:"智能体 ID"},gve={back:"返回智能体列表",createdBy:"创建人 {{creator}}",ariaLabel:"智能体工作区",main:"主界面",terminal:"终端",mainTitle:"{{agent}} 主界面",openingTerminal:"正在打开终端…",terminalTitle:"{{agent}} 终端"},bve={prompt:`使用 AgentKit Studio Plugin 端云接力当前会话、项目和任务。请直接执行,不要让我手动打开终端。
Studio:{{studioUrl}}
配对码:{{pairingCode}}`,installPrompt:`请安装 AgentKit Studio Plugin。请直接执行以下安装命令,不要让我手动打开终端。
-安装命令:{{command}}`,title:"接力到云端继续执行",description:"按顺序复制两段提示词,Codex 会通过插件将您的本地任务接力到云端",closeAria:"关闭本地迁移引导",installTitle:"安装插件",installDescription:"首次使用时,请选择一种安装方式。",copied:"已复制",copyInstallPrompt:"复制安装提示词",copyInstallCommand:"复制安装命令",installMethodAria:"插件安装方式",conversationInstall:"与 Codex 对话安装",terminalInstall:"从终端安装",taskTitle:"任务接力",taskDescription:"插件安装完成后复制,Codex 会迁移当前项目并继续执行任务。",copyHandoffPrompt:"复制接力提示词",generatingPairing:"正在生成新的配对码",pairingExpired:"配对码已过期",pairingRemaining:"配对码有效期剩余 {{countdown}}",refreshing:"刷新中",refreshPairing:"刷新配对码",pairingLoading:"正在生成配对码",pairingUnavailable:"配对码尚未生成。",statusAria:"端云接力状态",statusTitle:"接力状态",requestReceivedNamed:"已收到“{{name}}”的端云接力请求",requestReceivedCurrent:"已收到当前项目的端云接力请求",requestHelp:"复制接力提示词后,Codex 的请求会显示在这里。",entering:"正在进入",enterCodex:"进入 Codex",clipboardUnsupported:"当前浏览器不支持写入剪贴板。",steps:{request:"等待端侧请求",session:"创建云端 Session",restore:"恢复项目",continue:"发送续跑任务"},status:{issued:"等待请求",creating:"正在创建 Session",sessionCreated:"正在迁移项目",continuing:"正在启动云端任务",running:"云端执行中",completed:"接力完成",failed:"接力失败"}},vve={model:{description:"显示或切换当前对话模型",keywords:"模型 switch"},models:{description:"列出 app-server 可用模型",keywords:"模型列表 list"},skill:{description:"浏览并调用当前工作区可用的 Skill",keywords:"技能 workflow"},skills:{description:"浏览并调用当前工作区可用的 Skills",keywords:"技能列表 workflow list"},new:{description:"开始一个新对话",keywords:"新建 对话"},resume:{description:"打开历史会话或恢复指定 Thread",keywords:"历史 恢复 session"},fork:{description:"从当前上下文分叉一个新对话",keywords:"分叉 branch"},compact:{description:"压缩当前对话上下文",keywords:"压缩 上下文"},archive:{description:"归档当前对话并新建对话",keywords:"归档 关闭"},status:{description:"显示当前连接、Thread、模型与 Token 状态",keywords:"状态 连接 token"},clear:{description:"清空当前视图并开始新对话",keywords:"清空 重置"},help:{description:"显示 Sandbox 支持的快捷命令",keywords:"帮助 命令"},currentModel:"当前模型",availableModel:"可用模型",workspace:"工作空间",notSet:"未设置",modelLabel:"模型",statusLabel:"状态",running:"运行中",idle:"空闲",totalTokens:"累计 Token",contextWindow:"上下文窗口",imageFallback:"图片",unknown:"未知快捷命令:{{command}}。输入 /help 查看可用命令。",automaticSkills:"智能开发模式会自动使用开发能力,无需手动选择 Skill。",activity:{new:"已新建 Codex 对话",resumed:"已恢复 Codex 对话",deleted:"已删除 Codex 历史会话",modelChanged:"已切换 Codex 模型",availableModels:"Codex 可用模型",noModels:"当前没有可用模型",forked:"已分叉 Codex 对话",compacting:"已开始压缩当前 Codex 对话",archived:"已归档 Codex 对话",status:"Codex 当前状态",help:"Sandbox 支持的 Codex 快捷命令"}},xve={label:"智能构建任务",queued:"构建任务已排队",running:"构建任务正在后台运行",recovering:"正在恢复构建任务",waiting_user:"构建任务需要继续处理",stopping:"正在停止构建任务",succeeded:"构建任务已完成",cancelled:"构建任务已停止",failed:"构建任务未完成",open:"返回任务",hide:"隐藏任务通知",reconnecting:"正在重新连接任务服务,已有任务继续保留。"},wve={common:ave,tool:lve,threads:cve,permissions:uve,workspace:dve,approval:fve,composer:hve,launch:pve,session:mve,agentDetails:gve,agentWorkspace:bve,handoff:yve,commands:vve,taskNotice:xve},pQe=Object.freeze(Object.defineProperty({__proto__:null,agentDetails:gve,agentWorkspace:bve,approval:fve,commands:vve,common:ave,composer:hve,default:wve,handoff:yve,launch:pve,permissions:uve,session:mve,taskNotice:xve,threads:cve,tool:lve,workspace:dve},Symbol.toStringTag,{value:"Module"})),Ove={retry:"重试",signInToContinue:"登录以继续使用",signInWith:"使用 {{provider}} 登录",enterUsername:"输入一个用户名即可开始",usernamePlaceholder:"用户名(字母 + 数字,最多 16 位)",enter:"进入",usernameInvalid:"只能包含大小写字母和数字,最多 16 位。",identityProvider:{volcengine:"火山引擎 Identity",byteplus:"BytePlus Identity"},powered:{volcengine:"火山引擎 AgentKit 提供企业级 Agent 解决方案",byteplus:"BytePlus AgentKit 提供企业级 Agent 解决方案"},legalPrefix:"继续即表示你已阅读并同意 AgentKit",terms:"产品和服务条款",copyright:"© {{year}} VeADK。保留所有权利。"},kve={title:"登录状态已过期",description:"当前编辑内容会保留。重新登录后,刚才的操作将自动继续。",waiting:"等待登录完成…",signInAgain:"重新登录"},Sve={breadcrumbs:"面包屑",selectAgent:"选择 Agent",switchAgent:"切换智能体"},Eve={cancel:"取消",close:"关闭确认框"},mQe={login:Ove,authExpired:kve,navbar:Sve,confirm:Eve},gQe=Object.freeze(Object.defineProperty({__proto__:null,authExpired:kve,confirm:Eve,default:mQe,login:Ove,navbar:Sve},Symbol.toStringTag,{value:"Module"})),Cve={defaultUser:"用户",shortcuts:"快捷入口",tryCli:"体验 AgentKit CLI",developerResources:"开发者资源",systemInfo:"系统信息",language:"语言",issueFeedback:"问题反馈",logout:"退出登录",roles:{admin:"管理员",developer:"开发者",user:"普通用户",super_admin:"超级管理员"}},Tve={home:"返回首页",expand:"展开侧边栏",collapse:"收起侧边栏",label:"主导航",newChat:"新会话",agents:"智能体",workspaces:"工作区",library:"资源库",cronjobs:"定时任务",automations:"自动化",users:"用户管理",administration:"管控",reviewCenter:"审核中心"},Ave={title:"历史会话",newConversation:"新会话",create:"新建会话",loading:"正在加载历史会话…",empty:"暂无会话",current:"当前",manage:"管理历史会话:{{title}}",more:"更多",delete:"删除",loadingMore:"加载中…",loadMore:"加载更多",evaluatingTitle:"正在自动评测",evaluating:"评测中",generating:"正在生成"},bQe={account:Cve,navigation:Tve,history:Ave},yQe=Object.freeze(Object.defineProperty({__proto__:null,account:Cve,default:bQe,history:Ave,navigation:Tve},Symbol.toStringTag,{value:"Module"})),_ve={placeholder:"请选择",collapseOptions:"收起模型选项",expandOptions:"展开模型选项",noOptions:"暂无可用选项",noMatches:"没有匹配项,可直接使用当前模型 ID"},jve={unsupportedActivity:"不支持的 Skill 对话活动",ariaLabel:"Skill 生成对话"},Nve={code:"错误码:{{code}}",type:"错误类型:{{type}}",representation:"异常表示:{{value}}",rawResponse:`服务端原始响应:
-{{value}}`,original:"原始错误:{{message}}",details:"详细信息"},Rve={ariaLabel:"Skill 文件树",viewSource:"查看源码",viewPreview:"查看预览",download:"下载",binaryFile:"二进制文件",bytes:"{{value}} 字节",binaryDescription:"当前接口仅返回文件元数据,可单独下载原文件。",metadata:"Skill 元数据",noFiles:"暂无文件"},Ive={close:"关闭",name:"名称",region:"地域",optionalDescription:"描述(可选)",cancel:"取消",create:"创建",creating:"创建中…",save:"保存",saving:"保存中…",upload:"上传",uploading:"上传中…",createSpaceTitle:"新建 Skill 空间",editSpaceTitle:"编辑 Skill 空间",uploadTitle:"上传到 {{name}}",createSpaceFailed:"创建 Skill 空间失败",updateSpaceFailed:"更新 Skill 空间失败",archiveValidationFailed:"Skill ZIP 格式校验失败",uploadFailed:"上传 Skill 失败",dropzone:"拖拽 Skill ZIP 到这里",chooseLocalFile:"或点击选择本地文件",archiveHelp:"ZIP 根目录需要包含 SKILL.md,也可以只包含一层包装目录。选择后仅检查格式,不会自动上传。",validating:"正在检查文件格式…",validationPassed:"格式检查通过:{{name}},共 {{count}} 个文件"},Pve={styles:{concise:"简洁实用",strict:"严谨稳健",tutorial:"教程友好",automation:"自动化优先",custom:"自定义",customFallback:"自定义风格"},stages:{preparing:"正在准备 Dev Sandbox",ready:"Skill 已生成并通过格式校验",failed:"生成失败",cancelled:"已停止",validating:"正在校验 Skill 格式",packaging:"正在整理文件",generating:"正在生成 Skill",repairingAgain:"正在再次修复",autoRepairing:"正在自动修复({{attempt}}/{{max}})"},validation:{fallback:"Skill 格式校验未通过",repairInstruction:"只修复下面列出的 Skill 格式错误,不要改变原有用途和内容范围。",recheckInstruction:"修复后重新检查目录结构、SKILL.md frontmatter 和所有文本文件。",nameTooLong:"Skill 名称不能超过 64 个字符",invalidName:"Skill 名称只能包含小写字母、数字和连字符",modelTooLong:"模型 ID 不能超过 128 个字符",invalidModel:"模型 ID 只能包含字母、数字、点、下划线、连字符、斜杠和冒号"},errors:{loadCapability:"读取 Dev Sandbox 配置失败",autoRepair:"自动修复格式错误失败",pollCandidate:"读取候选方案状态失败,正在重试",createCandidate:"创建候选方案失败",refine:"继续调整失败",repairAgain:"再次修复格式错误失败",selectSpace:"请选择上传的 Skill Space",unsupportedRegion:"当前 Skill 地域不受支持",upload:"上传 Skill 失败",download:"下载失败"},sessionMax:"Session 最长保留 1 小时",remaining:"剩余 {{minutes}}:{{seconds}}",unnamedSpace:"未命名 Skill Space",leaveConfirmation:"离开后将停止并释放正在运行的 Dev Sandbox,确定离开吗?",createTitle:"创建技能",optimizeTitle:"优化 {{name}}",skillFallback:"技能",back:"返回技能空间",home:"主页技能生成",basicInfo:"基本信息",goal:"目标",createIntentPlaceholder:"描述希望这个 Skill 完成什么任务",optimizeIntentPlaceholder:"描述希望如何优化当前 Skill",skillName:"Skill 名称",autoNamePlaceholder:"留空时自动生成",nameHelp:"仅支持小写字母、数字和连字符;留空时自动生成。",createPlans:"生成方案",optimizePlans:"优化方案",createPlansDescription:"按不同方案并行生成多个技能,您可以选择最佳结果",optimizePlansDescription:"按不同方案并行优化当前技能,您可以选择最佳结果",plan:"方案 {{count}}",remove:"移除",model:"模型",modelPlaceholder:"选择或输入模型 ID",style:"风格",customStyle:"自定义风格",customStylePlaceholder:"描述表达方式、严谨程度或输出偏好",addConfiguration:"添加配置",notConfigured:"管理员未配置",generate:"生成",candidates:"候选方案",progress:"进度",retryCandidate:"重试此方案",formatValidationFailed:"格式校验未通过",repairAgain:"再次修复",files:"文件",downloadZip:"下载 ZIP",loadingFiles:"正在读取文件…",filesPending:"生成过程中会在这里显示完整文件树",uploadToSpace:"上传到 Skill Space",loadingSpaces:"正在加载 Skill Space",selectSpace:"选择 Skill Space",continuePlaceholder:"继续调整这个候选方案",continue:"继续调整",uploading:"上传中…",overwrite:"覆盖原 Skill",uploadToSelectedSpace:"上传到 Skill Space",uploadToCurrentSpace:"上传到当前空间",allCandidatesFailed:"所有方案均创建失败,可分别重试。"},Dve={invalidFormat:"{{label}}格式错误。",recoveryStatus:"Skill 恢复点状态",errorResponse:"错误响应",errorDetails:"错误详情",missingContentType:"Content-Type 缺失",gatewayError:"{{fallback}}(HTTP {{status}},Content-Type: {{contentType}})。请检查代理或网关配置。",nonJson:"{{fallback}}:服务端返回非 JSON 响应(HTTP {{status}},Content-Type: {{contentType}}),请检查代理或网关配置。",activity:"Skill 会话活动",invalidActivity:"Skill 会话活动格式错误。",invalidToolActivity:"Skill 工具活动格式错误。",invalidTextActivity:"Skill 文本活动格式错误。",publication:"Skill 发布结果",task:"Skill 会话",file:"Skill 文件",unknownTaskState:"Skill 会话状态无法识别。",capability:"Skill 工作台能力",loadCapability:"读取 Skill 工作台能力失败",prepareTask:"准备 Skill 会话失败",taskReference:"Skill 会话引用",startOptimization:"开始优化 Skill 失败",startTask:"开始 Skill 会话失败",taskSummary:"Skill 会话摘要",taskList:"Skill 会话列表",loadTaskList:"读取 Skill 会话列表失败",invalidTaskList:"Skill 会话列表格式错误。",loadTask:"读取 Skill 会话失败",artifact:"Skill 产物",artifactFile:"Skill 产物文件",loadArtifact:"读取 Skill 产物失败",refine:"继续调整 Skill 失败",stop:"停止当前 Skill 任务失败",publish:"发布 Skill 失败",nonNdjson:"发布 Skill 失败:服务端返回了非 NDJSON 响应。",missingStream:"发布 Skill 失败:服务端没有返回进度流。",publishProgress:"发布进度",invalidPublishProgress:"发布进度格式错误。",publishError:"发布错误",unknownPublishEvent:"未知的发布进度事件。",publishResult:"发布结果",streamEnded:"发布进度流提前结束,无法确认发布结果。请刷新技能中心确认状态。",deleteTask:"删除 Skill 会话失败",download:"下载 Skill 失败"},Mve={configSelect:_ve,conversation:jve,errorDetails:Nve,fileTree:Rve,management:Ive,generation:Pve,api:Dve},vQe=Object.freeze(Object.defineProperty({__proto__:null,api:Dve,configSelect:_ve,conversation:jve,default:Mve,errorDetails:Nve,fileTree:Rve,generation:Pve,management:Ive},Symbol.toStringTag,{value:"Module"})),Lve={back:"返回上一页",reload:"重新加载",notConfigured:"未配置",name:"名称",description:"描述",delete:"删除",save:"保存",saving:"保存中",add:"添加",manage:"管理",environment:"环境",noDescription:"暂无描述",refresh:"刷新",close:"关闭",retry:"重试",loading:"加载中…",previousPage:"上一页",nextPage:"下一页",edit:"编辑",all:"全部",search:"搜索",cancel:"取消",view:"查看",viewDetails:"查看详情",deleting:"删除中…",create:"创建",creating:"创建中",adding:"添加中",generating:"生成中",uploading:"上传中",preview:"预览",loadFailed:"加载失败",select:"选择",collapse:"收起",expand:"展开",none:"无"},$ve={ariaLabel:"AgentKit 快速入口",closeAriaLabel:"关闭 AgentKit 欢迎卡片",title:"欢迎使用 AgentKit",description:"通过 AgentKit 平台快速构建与托管您的企业级智能体",docsAriaLabel:"打开 AgentKit 文档,在新窗口打开",docs:"文档",consoleAriaLabel:"打开 AgentKit 控制台,在新窗口打开",console:"控制台"},Fve={checkUpdates:"检查更新",checkingVersions:"正在检查版本…",versionCheckError:"查询沙箱版本失败,请检查凭据、区域及接口权限后重试",sandboxUpdateError:"Sandbox 更新失败,请刷新检查实际状态后重试",modelEnvRepairUnavailable:"无法补齐模型环境变量,请检查 CODEX_API_KEY 和 CODEX_BASE_URL",updateSandbox:"更新{{variant}}{{name}}",updatingSandbox:"更新中",title:"系统信息",description:"查看当前 Studio 版本及关联的基础资源",general:"通用",currentVersion:"当前版本",storage:"存储",loadingStorage:"正在加载存储信息",tosAddress:"TOS 地址",openTosConsole:"在云控制台中打开 TOS 存储桶",environmentBuild:"环境构建",loadingEnvironmentResources:"正在加载环境构建资源",environmentResourcesError:"环境构建资源加载失败,请检查云凭据后重试。",codePipelineWorkspace:"CodePipeline 工作空间",codePipelinePipeline:"CodePipeline 流水线",openCodePipelineWorkspace:"在云控制台中打开 CodePipeline Workspace",createdOnFirstBuild:"首次构建时自动创建",containerRegistryRepository:"Container Registry 仓库",openContainerRegistryRepository:"在云控制台中打开 Container Registry 仓库",sandboxInfo:"沙箱信息",loadingSandboxInfo:"正在加载沙箱信息",sandboxInfoError:"沙箱信息加载失败,请重试。",snapshot:"快照版",snapshotWithSpace:"快照版 ",openToolConsole:"在云控制台中打开{{name}}",updateModelEnv:"更新{{variant}}{{name}}模型环境变量",modelEnvUpdated:"已更新",modelEnvAlreadyCurrent:"无需更新",userPool:"用户池",loadingUserPool:"正在加载用户池",userPoolError:"用户池加载失败,请重试。",modelEnvUpdateError:"模型环境变量更新失败,请重试。",openUserPoolConsole:"在云控制台中打开用户池{{name}}",unnamedUserPool:"未命名用户池",id:"ID",domain:"域名",region:"区域",noLocalUserPool:"本地模式未配置用户池",noUserPool:"当前 Studio 未配置用户池"},Bve={workspace:"Agent 工作区",library:"Agent 库",evaluation:"评测",agentList:"Agent 列表",agentDetails:"Agent 详情",newAgent:"新建 Agent",loading:"加载中…",loadingCloudAgents:"正在加载云端 Agent…",noAgentSelected:"请选择一个 Agent",local:"本地",remote:"云端",localAgent:"本地 Agent",remoteAgent:"云端 Agent",agentCount:"{{count}} 个 Agent",agentCountLabel:"Agent 数量",details:"详情",chat:"对话",update:"更新",backToAgentList:"返回 Agent 列表",loadingAgent:"正在加载 Agent",loadingAgentDescription:"正在读取 Agent 配置和 Runtime 信息。",loadingAgentInfo:"正在加载 Agent 信息…",detailLoadFailed:"无法加载 Agent 详情",detailLoadFailedDescription:"请检查 Runtime 状态后重试。",partialInfoUnavailable:"部分信息暂时不可用",upgradeRuntimeForDetails:"请升级 Runtime 以查看完整 Agent 信息。",basicInfo:"基本信息",usageOverview:"使用概览",sections:{basic:"基本信息",usage:"使用概览",evaluations:"评测",optimizations:"优化建议",integrations:"集成",versions:"版本"},evaluationGroup:"评测组",optimizations:"优化建议",optimizationsDescription:"根据评测结果查看可执行的优化建议。",integrations:"集成",githubVersions:"GitHub 版本",githubVersionsDescription:"查看持续交付产生的版本并创建回退 PR。",currentVersionOnly:"当前未启用 GitHub 持续交付,仅展示当前生产版本。",loadingVersions:"正在加载版本…",noVersion:"暂无版本记录",prLink:"Pull Request",viewPr:"查看 PR",author:"提交人",publishStatus:"发布状态",viewRelease:"查看发布记录",rollbackToVersion:"回退到此版本",rollingBack:"正在创建回退…",rollbackEvent:"回退事件",sourceMergedRuntimeStill:"最新源码已合并,但 Runtime 仍处于",currentProductionVersionHint:";当前生产版本保持不变。",usageSummary:"使用统计",totalCalls:"总调用次数",userCount:"用户数",userDetails:"用户明细",usageUserList:"Agent 使用用户列表",user:"用户",callCount:"调用次数",lastUsed:"最近使用",unknownUser:"未知用户",loadingUsage:"正在加载使用数据…",refreshing:"刷新中…",noUsage:"暂无使用记录",usageUnavailable:"当前 Agent 暂无可用的使用统计。",usagePagination:"使用记录分页",pageOf:"第 {{page}} / {{total}} 页",notProvided:"暂未提供",integrationMethods:"集成方式",integrationDescription:"通过 Runtime API 或 A2A 协议集成当前 Agent。",integrationProtocol:"集成协议",runtimeStatus:"Runtime 状态",executionFlow:"执行流程",probingIntegration:"正在检测集成能力",probingIntegrationDescription:"正在读取可用端点和鉴权配置。",configurationStatus:"配置状态",discoveryEndpoint:"发现端点",invocationEndpoint:"调用端点",invocationUrl:"调用地址",authentication:"鉴权方式",networkAccess:"网络访问",notAvailable:"暂无",noAuthentication:"无需鉴权",noApiKeyRequired:"无需 API Key",usesOauthJwt:"使用 OAuth / JWT",showApiKey:"显示 API Key",hideApiKey:"隐藏 API Key",pythonExample:"Python 示例",deploymentConfig:"部署配置",deploymentConfigDescription:"确认实例和运行配置后更新 Runtime。",deploymentRegion:"部署区域",concurrency:"并发数",selectedOptimizations:"已选优化项",selectedOptimizationsDescription:"这些优化会应用到本次更新。",optimizationProfile:"优化方案",updatePending:"等待更新",updatingDeployment:"正在更新部署",restoringUpdateConfig:"正在恢复更新配置…",updateConfigUnavailable:"无法读取更新配置",legacyConfigMissing:"旧版本 Runtime 缺少可恢复的配置,请重新创建。",deploymentFailed:"部署失败",continueEditing:"继续编辑",loadingOptimizations:"正在加载优化建议…",noOptimizations:"暂无优化建议",fixPriority:"优先级",suggestedModule:"建议模块",suggestionAndReason:"建议与原因",priority:{high:"高",medium:"中",low:"低"},modules:{agentStructure:"Agent 结构",prompt:"提示词",tool:"工具",knowledge:"知识库",memory:"记忆",workflow:"工作流",other:"其他"},evaluationGroupList:"评测组列表",newEvaluationGroup:"新建评测组",newEvaluationGroupName:"新评测组 {{count}}",searchEvaluationGroups:"搜索评测组",noMatchingEvaluationGroups:"没有匹配的评测组",noEvaluationGroupSelected:"请选择一个评测组",groupStats:"{{agents}} 个 Agent · {{runs}} 次运行",evaluationGroupDetails:"评测组详情",evaluationGroupStats:"{{agents}} 个 Agent · {{caseSet}} · {{runs}} 次运行",startEvaluation:"开始评测",evaluationConfig:"评测配置",historyResults:"历史结果",participatingAgents:"参与 Agent",selectedCount:"已选择 {{count}} 个",evaluationResources:"评测资源",evaluationSet:"评测集",evaluator:"评估器",caseCount:"{{count}} 条案例",evaluationMetrics:"评测指标",selectedMetricCount:"已选择 {{count}} 项",historyDescription:"查看每次评测的分数和运行状态。",noHistory:"暂无评测历史",noHistoryDescription:"运行一次评测后,结果会显示在这里。",evaluationRun:"第 {{index}} 次评测",evaluationRunMeta:"{{time}} · {{agents}} 个 Agent",overallScore:"综合分",completed:"已完成",evaluationDefaults:{coreRegression:"核心能力回归",safetyCheck:"安全与幻觉检查",coreSet:"核心回归集",safetySet:"安全边界集",toolSet:"工具调用集",qualityEvaluator:"综合质量评估器",factualEvaluator:"事实一致性评估器",toolEvaluator:"工具调用评估器",responseQuality:"回答质量",factualAccuracy:"事实准确性",toolUse:"工具调用",responseEfficiency:"响应效率",todayTime:"今天 10:32",yesterdayTime:"昨天 16:08",julyTime:"7 月 25 日 14:20",justNow:"刚刚"},defaultCases:{agentName:"示例 Agent",goodSetName:"示例正向案例集",badSetName:"示例负向案例集",weeklyFeedback:{input:"总结本周客户反馈,并按优先级归类。",output:"覆盖主要问题,给出清晰的优先级与下一步动作。",tag:"总结",reason:"任务完整覆盖了用户目标,输出结构清晰,并给出了可执行的下一步动作。"},research:{input:"查询最新公开资料并附上来源。",output:"调用搜索工具,结论与引用一一对应。",tag:"工具调用"},uncertainConclusion:{input:"在信息不足时直接给出确定结论。",output:"应明确说明未知,并主动询问缺失信息。",tag:"幻觉",reason:"信息不足时仍给出了确定结论,缺少必要的澄清步骤与不确定性说明。"},repeatedTool:{input:"连续重复调用相同工具获取同一结果。",output:"复用已有结果,避免无意义的重复调用。",tag:"效率"}},goodCases:"正向案例",badCases:"负向案例",goodCase:"正向案例",badCase:"负向案例",reference:"参考答案",caseResultFilter:"案例结果筛选",feedbackSourceFilter:"反馈来源筛选",searchCases:"搜索案例",searchCasesPlaceholder:"搜索输入、输出或标签",selectCases:"选择案例",selectAll:"全选",selectAllVisible:"选择当前可见案例",selectedCaseCount:"已选择 {{count}} 条",deleteSelected:"删除所选",deleteSelectedTitle:"删除所选 Agent",deleteSelectionDescription:"确定删除所选的 {{count}} 个项目吗?此操作无法撤销。",deleteCasesConfirm:"删除所选案例",deleteOneCaseConfirm:"删除这个案例",deleteFeedbackCase:"删除反馈案例",noFeedbackCases:"暂无反馈案例",noMatchingCases:"没有匹配的案例",loadingEvaluationSet:"正在加载评测集…",userInput:"用户输入",agentOutput:"Agent 输出",score:"得分",scoreReason:"评分原因",noUserInput:"暂无用户输入",noVisibleResponse:"暂无可见回复",note:"备注:",manualFeedback:"人工反馈",automaticFeedback:"自动反馈",scoreValue:"{{score}} 分",unknownTime:"时间未知",deleteAgentTitle:"删除 Agent",deleteAgentDescription:"确定删除 Agent“{{name}}”吗?",deleteDraftDescription:"确定删除草稿“{{name}}”吗?",deleteAgent:"删除 Agent",closeDeleteConfirmation:"关闭删除确认",draftDeletionWarning:"草稿将从当前浏览器中删除。",runtimeDeletionWarning:"Runtime 和相关云端资源将被删除。",noneSelected:"尚未选择",none:"无",notPublished:"未发布",notRecorded:"未记录",noTime:"暂无时间",noPr:"暂无 PR",comingSoon:"评测能力即将开放",preparing:"准备中",cancelled:"已取消",failed:"失败",totalCount:"共 {{count}} 条",deploymentProgress:"部署进度",returnToEdit:"返回编辑",buildLog:"构建日志",githubMountLog:"GitHub 挂载日志",githubDeliveryMountLog:"GitHub 持续交付挂载日志",waitingBuildLog:"正在等待构建日志…",waitingGithubMountLog:"正在等待 GitHub 挂载日志…",copy:"复制",copied:"已复制",copyLabel:"复制{{label}}",copiedLabel:"已复制{{label}}",logLines:"{{count}} 行",logStatus:{synced:"已同步",failed:"读取失败",syncing:"同步中",earlyOmitted:"已省略早期日志",recentOnly:"仅显示最近的构建日志",partiallyOmitted:"已省略部分日志"},deployStatus:{running:"正在部署",unconfirmed:"部署状态待确认",success:"部署完成",error:"部署失败",cancelled:"部署已取消"},deploymentSteps:{prepare:{label:"准备部署",description:"校验配置并创建部署任务"},build:{label:"构建镜像",description:"生成运行环境与智能体代码"},deploy:{label:"部署服务",description:"创建并启动 AgentKit Runtime"},publish:{label:"发布服务",description:"等待服务就绪并生成访问地址"},complete:{label:"部署完成",description:"智能体已可以正常使用"},evaluation:{label:"创建评测集",description:"自动创建 Good Case 和 Bad Case 评测集"},github:{label:"挂载 GitHub 持续交付",description:"初始化目标分支与 GitHub Actions workflow"},update:{label:"更新实例配置",description:"将 Runtime 实例数调整为 {{min}}~{{max}}"}},githubStatus:{published:"已发布",publishing:"发布中",failed:"发布失败",pending:"等待发布",unknown:"未知"},errors:{agentInfoMissing:"Agent 信息不可用",checkUpdateCapability:"无法检查更新能力",checkingUpdateConfig:"正在检查更新配置",cloudOnlyUpdate:"仅云端 Agent 支持更新",deleteDeployedUnsupported:"当前不支持删除已部署 Agent",deleteDraftUnsupported:"当前不支持删除草稿",loadAgentInfo:"无法加载 Agent 信息",loadApiKey:"无法读取 API Key",loadGithubVersions:"无法加载 GitHub 版本",loadEvaluations:"无法加载评测案例",loadOptimizations:"无法加载优化建议",loadRuntimeDetails:"无法加载 Runtime 详情",loadUsage:"无法加载使用数据",noCreatePermission:"当前账号没有创建 Agent 的权限",noManagePermission:"当前账号没有管理此 Agent 的权限",originalConfigUnavailable:"原始配置不可用",probeIntegration:"无法检测集成能力",rollbackVersion:"无法创建版本回退",runtimeRegionMissing:"Runtime 区域信息缺失",updateCapabilityMismatch:"Runtime 更新能力与当前配置不匹配",updateCapabilityPending:"Runtime 更新能力仍在确认中",updateConfigRestoring:"正在恢复更新配置",updateUnsupported:"当前 Runtime 不支持更新",usageMismatch:"返回的使用数据与当前 Agent 不匹配"}},Uve={title:"环境",loadFailed:"环境加载失败,请检查存储配置后重试。",create:"新建环境",configure:"配置环境",details:"环境详情",editorDescription:"配置运行环境,或接入代码仓库和已有镜像",backToList:"返回环境列表",save:"保存环境",createAndBuild:"创建并构建",saveAndBuild:"保存并构建",name:"环境名称",namePlaceholder:"Python 数据处理",descriptionPlaceholder:"说明这个环境适合处理的任务",creationMethod:"创建方式",baseConfiguration:"基础配置",baseEnvironment:"基础环境",operatingSystem:"操作系统",pythonVersion:"Python 版本",fixedByBase:"由 {{base}} 固定为 {{value}}",selectUbuntuVersion:"选择基础镜像的 Ubuntu 版本",selectPythonVersion:"选择需要安装的 Python 版本",skills:"技能",addSkill:"添加环境技能",veadkDescription:"Agent 开发与运行框架",customDockerfile:"自定义 Dockerfile",presetEnvironment:"预制环境",presetHint:"选择“无”可自行填写 Dockerfile 第一行的基础镜像。",dockerfileSize:"{{size}} / {{max}} 字节",upload:"上传",reset:"重置",dockerfileBaseImage:"Dockerfile 基础镜像",dockerfileContent:"Dockerfile 内容",region:"区域",search:"搜索环境",manualImport:"手动导入",noMatches:"没有匹配的环境",tryAnotherName:"请尝试搜索其他名称",startBuild:"开始构建",build:"构建",unnamed:"未命名环境",listSeparator:"、",clipboardReadError:"未能读取剪贴板。请允许剪贴板权限,或点击“导入环境”后手动粘贴分享码。",clipboardUnsupported:"当前浏览器无法自动读取剪贴板;请点击“导入环境”后手动粘贴分享码。",creation:{custom:{label:"自定义配置",description:"通过表单选择基础环境、Python、工具和技能"},dockerfile:{label:"自定义 Dockerfile",description:"上传或直接编辑 Dockerfile"},git:{label:"从代码仓库构建",description:"探查公开仓库并通过 CodePipeline 构建"},image:{label:"使用已有镜像",description:"绑定由外部流水线交付的 CR 镜像"}},baseDescriptions:{"aio-sandbox":"内置 Sandbox Shell 能力 · Ubuntu 22.04","codex-sandbox":"内置 Codex CLI、浏览器与代码执行环境",ubuntu:"标准 Linux 基础镜像"},dockerfileValidation:{baseImageRequired:"请填写基础镜像。",duplicateFrom:"基础镜像已固定在第一行,请删除 Dockerfile 正文中的 FROM 指令。",tooLarge:"Dockerfile 不能超过 128 KiB。",empty:"Dockerfile 内容不能为空。",missingFrom:"Dockerfile 缺少 FROM 指令。"},presets:{none:"自行填写 Dockerfile 基础镜像",aio:"内置 Sandbox Shell 与常用运行时",codex:"内置 Codex CLI、浏览器与代码执行环境"},categories:{tools:"工具",productivity:"效率",browser:"浏览器自动化",system:"系统与媒体"},options:{"lark-cli":"飞书开放平台命令行工具",pandoc:"文档格式转换工具",opencli:"将网站与桌面应用转换为命令行工具",uv:"快速 Python 包与项目管理器",ripgrep:"高性能文本检索工具",jq:"JSON 查询与转换工具","github-cli":"在终端中管理 GitHub 工作流",playwright:"浏览器自动化与端到端测试",chromium:"无头浏览器运行时",git:"代码版本管理",curl:"网络请求与文件下载",ffmpeg:"音视频转码与处理",imagemagick:"图片转换与批处理"},duration:{seconds:"{{count}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒",hoursMinutes:"{{hours}} 小时 {{minutes}} 分"},buildStatus:{preparing:"准备中",queued:"排队中",building:"构建中",scanning:"扫描中",available:"可用",failed:"构建失败",notBuilt:"未构建"},manifest:{title:"环境 Manifest",closeLabel:"关闭环境 Manifest",loading:"正在加载 Manifest",editorLabel:"环境 Manifest YAML",copyFailed:"复制失败,请重试",copied:"已复制",copy:"复制 Manifest",view:"查看环境 Manifest",viewShort:"查看 Manifest",unavailable:"尚无可用 Manifest"},buildDetails:{title:"构建详情",closeLabel:"关闭构建详情",currentStep:"当前步骤",waiting:"等待构建信息",elapsed:"已用时",sourceCommit:"源码提交",openCodePipeline:"在 CodePipeline 中查看",starting:"正在启动",rebuild:"重新构建"},git:{sectionLabel:"公开代码仓库",address:"Git 地址",ref:"Branch、Tag 或 Commit",defaultBranch:"默认分支",inspecting:"正在拉取仓库并查找 Dockerfile",foundDockerfiles:"已在提交 {{commit}} 中找到 {{count}} 个 Dockerfile。",savedDockerfileLoaded:"已载入保存的 Dockerfile,可重新探查仓库更新。",noDockerfile:"仓库中未找到 Dockerfile,请检查分支或仓库内容。",inspectAgain:"重新探查",selectDockerfile:"选择 Dockerfile"},repository:{outputSection:"构建输出",type:"镜像仓库类型",managed:"Studio 默认镜像仓库",existing:"已有镜像仓库",managedHint:"构建时自动创建或复用当前区域的 Studio 镜像仓库。"},existingImage:{sectionLabel:"已有镜像",reference:"Tag 或 Digest",placeholder:"latest 或 sha256:...",hint:"填写镜像 Tag,或以 sha256: 开头的完整 Digest。"},share:{action:"分享",title:"分享环境",closeLabel:"关闭分享环境",generating:"正在生成并复制分享码",copied:"分享码已复制",failed:"分享失败",code:"分享码",fullCode:"完整环境分享码",copiedHint:"分享码已自动复制,也可在这里查看或手动复制。",copyFailedHint:"自动复制失败,可手动复制上方分享码,或重试。",safety:"分享码可能包含环境配置与本地 Skill 内容,请仅发送给可信对象。",copyAgain:"再次复制"},import:{title:"导入环境",closeLabel:"关闭导入环境",description:"先检测分享码中的环境,再确认添加到当前账号。",code:"环境分享码",tooMany:"最多可一次导入 {{max}} 个环境,当前检测到 {{count}} 个分享码。",multipleHint:"多个分享码可使用英文逗号、中文逗号或换行分隔,重复项会自动忽略。",safety:"分享码可能包含环境配置与本地 Skill 内容,请仅导入可信来源的分享码。",inspectingCodes:"正在检测环境分享码",found:"检测到 {{count}} 个环境:{{names}}。",itemError:"第 {{index}} 个分享码:{{error}}",invalidCode:"分享码无效。",noResult:"服务未返回该分享码的导入结果。",partial:"已导入 {{created}} 个环境,{{remaining}} 个未完成,可重试有效失败项。",inspecting:"正在检测",importing:"正在导入",retryImport:"重试导入",confirm:"确认导入",inspectCodes:"检测分享码"},status:{boundImage:"环境“{{name}}”已绑定已有镜像",queued:"环境“{{name}}”已进入构建队列",savedBuildFailed:"环境已保存,但构建未启动:{{error}}",importedFailed:"已导入 {{created}} 个环境,{{failed}} 个失败",importedDuplicate:"已导入 {{created}} 个环境,{{duplicate}} 个分享码已存在",imported:"已导入 {{count}} 个环境",deleted:"已删除环境“{{name}}”"},deleteTitle:"删除环境",deleteDescription:"确定删除环境“{{name}}”吗?删除后无法恢复。",errors:{repositoryRequired:"请输入公开代码仓库地址。",repositoryHttps:"请输入公开仓库的 HTTPS 地址。",repositoryInvalid:"请输入有效的公开仓库 HTTPS 地址。",imageReferenceWhitespace:"Tag 或 Digest 不能包含空格。",imageDigestInvalid:"Digest 必须是完整的 sha256 值。",imageTagOnly:"这里只填写 Tag,不要重复填写镜像仓库路径。"}},Qve={searchPlaceholder:"搜索资源名称",emptyMessage:"暂无可用选项",searchAriaLabel:"搜索{{label}}",loadingMore:"正在加载更多资源…"},zve={retryDeployment:"重试部署",retrying:"正在重试…",collapse:"收起错误信息",expand:"展开完整错误信息",copy:"复制完整错误信息"},Vve={steps:"构建步骤",log:"构建日志",syncing:"同步中",loadFailed:"读取失败",synced:"已同步",recentOnly:" · 仅显示最近日志",copiedLog:"已复制构建日志",copyLog:"复制构建日志",copied:"已复制",copy:"复制",logContent:"构建日志内容",waiting:"正在等待 CodePipeline 输出日志…",empty:"暂无构建日志"},Hve={defaultLabel:"Studio 默认环境",defaultDescription:"使用 Studio 预置的标准运行环境",status:{notBuilt:"未构建",preparing:"准备中",queued:"排队中",building:"构建中",scanning:"扫描中",available:"可用",failed:"失败"},label:"运行环境",placeholder:"请选择运行环境",search:"搜索运行环境",loading:"正在加载运行环境…",loadFailed:"加载运行环境失败",noMatches:"未找到匹配的运行环境",unavailable:"当前没有可用的运行环境",selectionUnavailable:"所选运行环境当前不可用,请重新选择。",selectionHint:"选择构建完成的运行环境后,部署将使用其镜像和工具配置。",versionChanged:"所选环境版本已更新,请确认后继续。",versionMissing:"所选环境版本已不存在,请重新选择。",operatingSystem:"操作系统",language:"语言",image:"镜像",imageVersion:"镜像版本",skills:"技能",tools:"工具",noSkills:"未配置 Skill",noExtraTools:"未配置额外工具",defaultGuidance:"默认环境由 Studio 管理,无需额外配置。",persistenceFallback:"持久化环境服务暂不可用,当前使用默认环境。",emptyFallback:"当前没有可选择的自定义环境。"},qve={repository:"GitHub 仓库",githubUrl:"GitHub 地址",token:"访问令牌",sessionToken:"{{provider}} 临时令牌",runtime:"Runtime",commit:"提交",workflow:"工作流",syncFailed:"同步 GitHub 代码失败",status:{mounted:"已挂载",bound:"已绑定",synced:"已同步",created:"已创建"},volcengine:"火山引擎",mountDelivery:"挂载持续交付",selectedForDeployment:"已选择,部署时挂载",mountOnDeploy:"部署时挂载持续交付",syncCode:"同步代码",deliveryMode:"GitHub 交付模式",sourceSync:"GitHub 代码同步",delivery:"GitHub 交付",loading:"读取中",running:"执行中",runtimeDeliveryHint:"写入 AgentKit Runtime GitHub Actions workflow,后续 GitHub 提交会更新绑定 Runtime。",initialDeliveryHint:"首次部署成功后初始化目标分支,后续 GitHub 提交会更新绑定 Runtime。",sourceSyncHint:"Studio 会直接 push 到目标分支;该分支由 Studio 管理,远端冲突时同步会失败。Runtime 仍由部署按钮发布。",tokenPlaceholder:"repo 或 contents write 权限",getToken:"获取 Token",hideToken:"隐藏 Token",showToken:"显示 Token",tokenHelp:"Token 仅用于本次操作,成功后不会保留在表单中。",targetBranch:"目标分支",actionsSecretPlaceholder:"用于写入 GitHub Actions Secret",sessionTokenPlaceholder:"临时凭证可选",syncing:"同步中…",pendingHint:"已选择挂载持续交付。点击部署后,Studio 会等待 Runtime 创建完成并初始化 GitHub 目标分支,初始化成功后才完成部署流程。",result:{deliveryMounted:"已挂载持续交付",deliverySelected:"已选择挂载持续交付",githubBound:"已绑定 GitHub",codeSynced:"代码已同步",deliveryHint:"目标分支提交会触发 Runtime 持续交付。",boundHint:"更新并发布时会先同步当前源码到这个分支。"},branch:"分支",viewPr:"查看 PR",createFailed:"创建失败",phase:"阶段",log:"日志"},Wve={name:"飞书",enabling:"正在启用并更新配置…",description:"接收消息并通过飞书机器人回复",configuration:"飞书配置",configurationMode:"飞书配置方式",automatic:"自动配置",manual:"手动配置",cancelling:"取消中…",scanToCreate:"扫码创建",scanDescription:"授权后自动回填凭据",generateQrCode:"生成二维码",qrCodeAlt:"飞书机器人配置二维码",scanToConfirm:"飞书扫码确认",expiresIn:"{{time}} 后失效",created:"机器人已创建",credentialsFilled:"应用凭据已自动回填",qrCodeExpired:"二维码已失效",automaticFailed:"自动配置失败",regenerateQrCode:"请重新生成二维码。",configuredPlaceholder:"已配置,留空沿用",appSecretPlaceholder:"请输入 App Secret",hideSecret:"隐藏 App Secret",showSecret:"显示 App Secret"},Kve={mode:{auto:"自动创建",autoDescription:"部署时自动创建所需资源",recommended:"推荐",create:"指定名称",createDescription:"使用指定名称创建或复用资源",existing:"选择已有",existingDescription:"从当前账号的已有资源中选择"},selectExisting:"请选择已有资源",searchResource:"搜索资源名称",noMatch:"未找到匹配资源",noAvailable:"暂无可用资源",searching:"正在搜索云资源…",loading:"正在加载云资源…",noMatchSentence:"未找到匹配资源。",noAvailableSentence:"暂无可用资源。",loadedSummary:"实际服务区域:{{region}} · 已加载 {{loaded}}{{total}}",registryInstance:"Registry 实例",registryAriaLabel:"镜像仓库 Registry 实例",namespace:"命名空间",namespaceAriaLabel:"镜像仓库 Namespace",repository:"镜像仓库",existingRepository:"已有镜像仓库",selectRegistryFirst:"请先选择 Registry 实例。",selectNamespaceFirst:"请先选择 Namespace。",configurationMode:"配置方式",configurationModeAriaLabel:"{{resource}}配置方式",selectConfigurationMode:"请选择配置方式",automaticNames:"自动创建名称",validation:{tos:"请填写或选择 TOS 存储桶。",cr:"请完整填写或选择 CR 实例、命名空间和镜像仓库。",codePipeline:"请完整填写或选择 CodePipeline Workspace 和 Pipeline。",existingCodePipeline:"请选择已有的 CodePipeline Workspace 和兼容 Pipeline。"},autoBucketWithRegion:"agentkit-platform-{账号 ID}-{{region}}",autoBucket:"agentkit-platform-{账号 ID}",tosBucket:"TOS 存储桶",bucketName:"存储桶名称",bucketNamePlaceholder:"输入存储桶名称",existingBucket:"已有存储桶",existingTosBucket:"已有 TOS 存储桶",bucket:"存储桶",accountIdResolved:"账号 ID 在部署时按当前云账号解析。",containerRegistry:"容器镜像仓库(CR)",instanceName:"实例名称",crInstance:"CR 实例",existingCrInstance:"已有 CR 实例",existingCrNamespace:"已有 CR 命名空间",existingCrRepository:"已有 CR 镜像仓库",autoRegistry:"agentkit-platform-{账号 ID}",autoRepositoryName:"{{name}}-{4 位随机字符}",registryNameNote:"账号 ID 在部署时解析,镜像仓库的随机字符在部署时生成。",workspace:"工作空间",pipeline:"流水线",workspaceName:"Workspace 名称",pipelineName:"Pipeline 名称",existingWorkspace:"已有 CodePipeline Workspace",compatiblePipeline:"兼容 Pipeline",existingPipeline:"已有 AgentKit CodePipeline",pipelineNameNote:"Pipeline 与 Runtime 名称一致。"},Gve={commit:"提交",steps:{permissions:"预检 OTA 所需权限",resolving:"读取目标版本信息",downloading:"下载并校验完整更新包",preparing:"准备 VeFaaS Function 代码",provisioning:"检查并补齐 Studio 云资源",scheduler:"更新定时任务调度服务",submitting:"提交 Function 更新",publishing:"发布新 Revision 并重启服务"},stages:{permissions:"预检 OTA 权限",resolving:"读取版本信息",downloading:"下载更新包",preparing:"准备 Function 代码",provisioning:"补齐 Studio 云资源",scheduler:"更新定时任务调度服务",submitting:"提交 Function 更新",publishing:"发布 Revision",checking:"检查更新",unknown:"未知阶段"},duration:{seconds:"{{count}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒"},logPermissionPrefix:"无法读取 VeFaaS 发布日志。Function 角色缺少 ",logPermissionSuffix:" 权限,更新会继续。",openIamConsole:"前往 IAM 控制台配置权限",deploymentProgress:"部署进度",live:"实时",completed:"已完成",stopped:"已停止",copied:"已复制",copyFailed:"复制失败",copyLog:"复制日志",waitingForLogs:"等待 VeFaaS 返回更新日志…",noLogs:"本次更新未返回发布日志",messages:{updated:"Studio 已更新,新 Revision 已接管服务",failed:"Studio 更新失败",timeout:"等待 VeFaaS 发布超时,请稍后重新检查版本",submitted:"更新已提交,正在等待 VeFaaS 发布新版本",connectionSwitched:"连接已切换,正在确认新版本状态"},checkingPermissions:"正在检查 OTA 权限",authorizationRequired:"需要 IAM 授权",updating:"正在更新 Studio",updated:"Studio 已更新",updateToVersion:"更新 Studio 至 {{version}}",checkPermissions:"检查更新权限",authorizationNeeded:"需要授权",updatingShort:"正在更新",refreshForNewVersion:"刷新使用新版",updateFailed:"更新失败",updateNow:"立即更新",newVersionAvailable:"有新版更新",dialog:{failed:"Studio 更新失败",checkingPermissions:"正在检查更新权限",authorizationRequired:"需要 IAM 授权",updating:"正在更新 Studio",completed:"Studio 更新完成",newVersion:"发现新版本"},permissionCheck:"正在核对 OTA 与定时任务所需的全部 IAM 权限…",permissionCheckHint:"权限全部满足后才会开始下载、更新或发布云资源。",missingPermissionCount:"当前 Function 角色缺少 {{count}} 项 OTA 更新权限,尚未执行任何云资源变更。",functionRole:"Function 角色",currentRole:"当前运行角色",policyToUpdate:"将更新策略",authorizationSteps:{open:"打开授权页面,确认已预填的策略名称和完整策略内容。",debug:"点击页面中的“发起调试”,完成策略更新。",return:"返回此窗口,点击“我已授权,重新检查”。"},missingPermissions:"缺少的权限",openPrefilledAuthorization:"打开已预填的 IAM 授权页面",openIamManually:"前往 IAM 控制台手动配置",noSafePolicy:"当前角色没有唯一可安全更新的自定义策略,请由管理员将上述权限加入该角色。",failedStage:"失败阶段",errorId:"错误 ID",notGenerated:"未生成",openFunctionLogs:"前往 VeFaaS 控制台查看 Function 日志",targetVersion:"目标版本",updateStatus:"更新状态",elapsed:"已用时",progressAriaLabel:"Studio 更新进度",processingUpdate:"正在处理更新",processing:"正在处理",backgroundHint:"发布阶段会短暂中断连接;关闭此窗口不会停止更新,可随时点击右上角按钮重新查看。",confirmDescription:"更新会重启 Studio 服务,预计约 3–5 分钟完成更新与发布。期间正在进行的对话、流式响应或部署任务可能中断,登录态不会受到影响。",selectVersion:"选择版本",currentVersion:"当前版本",changelog:"更新内容",noChangelog:"暂无更新说明",runInBackground:"后台运行",authorizedRecheck:"我已授权,重新检查",tryAgain:"重新尝试"},Xve={deploy:"部署",update:"更新",planHash:"方案哈希",backToConfiguration:"返回配置",releaseRegion:"发布区域",deployRegion:"部署区域",regionPreserved:"更新时沿用现有 Runtime 的部署区域,无法修改。",unnamedAgent:"未命名 Agent",deployTitle:"部署 {{name}}",additionalAgentCount:" 等 {{count}} 个智能体",releaseOverview:"发布概览",agentOverview:"Agent 概览",agentCount:"Agent 数量",model:"模型",systemPrompt:"系统提示词",optimizations:"优化选项",notEnabled:"未启用",effectiveCapabilities:"生效能力",automaticProtection:"自动保护",artifactActions:"发布产物操作",exportYaml:"导出 YAML",viewSource:"查看源代码",downloadSource:"下载源代码",expandFlow:"放大查看执行流程",expand:"放大查看",deploymentConfiguration:"部署配置",runtimeName:"Runtime 名称",runtimeNamePreserved:"更新时保持现有 Runtime 名称不变。",runtimeNameHint:"默认根据 Root Agent 名称生成,并添加随机后缀避免重名;支持 4-64 位字母、数字、连字符和下划线",accessAuthentication:"访问鉴权",authenticationPreserved:"更新时保持现有 Runtime 的鉴权方式不变。",authenticationMethod:"鉴权方式",authenticationAriaLabel:"部署鉴权方式",authenticationPlaceholder:"请选择鉴权方式",messageChannels:"消息渠道",instanceSettings:"实例设置",minInstances:"最小实例数",maxInstances:"最大实例数",sidecarSingleInstance:"Harness Sidecar 首期仅支持单实例,Runtime 固定为 1~1",inMemorySingleInstance:"为避免多实例间会话丢失,推荐将 Runtime 固定为 1~1",network:"网络",networkPreserved:"现有 Runtime 的区域与网络模式保持不变。",networkMode:"网络模式",networkModes:{public:"公网",both:"公网 + VPC"},subnetId:"子网 ID",subnetHint:"可选,多个用逗号分隔",sharedInternetAccess:"VPC 内共享公网出口",evaluationSets:"评测集",createEvaluationSets:"自动创建评测集",createEvaluationSetsHint:"部署成功后,自动创建 Good Case 和 Bad Case 评测集。",resourceConfiguration:"资源配置",environmentVariables:"环境变量",environmentVariablesHint:"组件配置会自动同步到这里,部署前可核对最终值。",itemCount:"{{count}} 项",addVariable:"添加变量",componentGenerated:"组件自动生成",injectedByApiKey:"由所选 API Key 注入",envNameAriaLabel:"{{key}} 环境变量名",envDescriptionAriaLabel:"{{key}}说明:{{description}}",openOpenViking:"打开 OpenViking {{label}}",openOpenVikingAriaLabel:"{{key}}:打开 OpenViking {{label}}",requiredEmpty:"必填,尚未填写",optionalEmpty:"可选,尚未填写",envValueAriaLabel:"{{key}} 环境变量值",automatic:"自动",synced:"同步",customModelCredentials:"自定义模型凭据",releaseOnlySecret:"必填,仅用于本次发布",thisRelease:"本次发布",customVariables:"自定义变量",value:"值",deleteVariable:"删除变量",deploymentProgress:"部署进度",retryUpdate:"重试更新",retryDeploy:"重试部署",updateSucceeded:"更新成功",deploySucceeded:"部署成功",region:"区域",agentName:"Agent 名称",apiEndpoint:"API 端点",connecting:"连接中…",chatNow:"立即对话",console:"控制台",actionInProgress:"{{action}}中…",checkingName:"正在检查名称…",retryAction:"重试{{action}}",flowPreview:"执行流程预览",executionFlow:"执行流程",flowPreviewHint:"只读预览,可缩放与拖动画布",closeFlowPreview:"关闭执行流程预览",agentAdded:'Agent "{{name}}" 已添加到左上角下拉列表!',files:{preview:"文件预览",new:"新建文件",empty:"暂无文件",noneSelected:"未选择文件",selectToView:"选择左侧文件以查看内容",loadingEditor:"加载编辑器…",rename:"重命名",renamePrompt:"重命名文件"},apiKey:{selectFirst:"请先选择 API Key",revealing:"正在显示 API Key",hide:"隐藏 API Key",retryReveal:"重试显示 API Key",reveal:"显示 API Key"},task:{preparing:"准备部署",waitingBuildLog:"正在等待构建日志…",waitingGithubLog:"正在等待 GitHub 挂载日志…",syncingGithub:"正在同步当前源码到 GitHub",syncGithubCode:"同步 GitHub 代码",githubSynced:"GitHub 代码已同步",githubSubmitted:"GitHub 代码已提交",githubUpdatingRuntime:"代码已提交到 GitHub,GitHub Actions 正在更新同一个 Runtime",initializingGithub:"开始初始化 GitHub main 分支与 Actions workflow",initializingGithubBranch:"正在初始化 GitHub 持续交付目标分支",mountGithubDelivery:"挂载 GitHub 持续交付",githubBranchInitialized:"GitHub 持续交付已初始化目标分支",githubDeliveryMounted:"GitHub 持续交付已挂载",githubMountFailed:"挂载 GitHub 持续交付失败",githubMountFailedDetail:"GitHub 持续交付挂载失败:{{message}}",githubMountFailedHint:"挂载 GitHub 持续交付失败,详见 GitHub 日志。",deploymentComplete:"部署完成",deployedNotConnected:"部署完成,暂未连接",cancelled:"已取消",cancelledHint:"部署已取消,相关 Runtime 资源已请求销毁。",deploymentStatusUnconfirmed:"部署状态待确认",deploymentFailed:"部署失败",buildFailedHint:"构建镜像失败,详见构建日志。"},confirm:{updateTitle:"确认更新",deployTitle:"确认部署",closeLabel:"关闭部署确认",updateDescription:"将更新并发布到当前云端 Runtime,过程可能需要几分钟。确定继续吗?",deployDescription:"将创建新的云端 Runtime,部署过程可能需要几分钟。确定继续吗?",update:"确定更新",deploy:"确定部署"},userPool:{label:"用户池",unnamed:"未命名用户池",current:"当前用户池",ariaLabel:"部署用户池",loading:"正在加载用户池…",placeholder:"请选择用户池",loadingIdentity:"正在加载 Identity 用户池…",empty:"当前账号下暂无 Identity 用户池。",currentHint:"当前 Studio 的登录 JWT 将透传访问此 Runtime。",mismatchHint:"所选用户池不是当前 Studio 使用的用户池,部署后无法从 Studio 调用此 Runtime。",markedHint:"当前 Studio 使用的用户池已在列表中标注。"},authentication:{apiKeyDescription:"默认方式,使用 Runtime API Key 访问",userPool:"用户池",userPoolDescription:"使用 Identity 用户池签发的 JWT"},steps:{buildImage:"构建镜像",deploy:"部署",publish:"发布",syncCode:"同步代码",uploadPackage:"上传代码包",packageImage:"镜像打包",createRuntime:"创建 Runtime",publishService:"发布服务",updateInstances:"更新实例配置",createEvaluationSets:"创建评测集"},errors:{instanceRangeInteger:"最小实例数必须为大于等于 0 的整数,最大实例数必须为大于 0 的整数。",instanceRangeOrder:"最小实例数不能大于最大实例数。",selectApiKey:"请先在模型配置中选择 API Key。",loadApiKey:"加载 API Key 失败,请重试。",invalidProject:"项目数据无效",updateFeishu:"更新飞书配置失败:{{message}}",userPoolRequired:"请选择用于 Runtime 鉴权的用户池。",vpcRequired:"使用 VPC 网络时,请填写 VPC ID。",modelSecretRequired:"请填写 {{label}},用于访问对应的自定义模型地址。",managedApiKeyRequired:"{{requirement}},请先返回模型配置选择 API Key。",feishuEnvRequired:"启用飞书后,请填写{{field}}。",runtimeNameExists:"Runtime 名称已存在,请修改后重试。",deployedButGithubMountFailed:"部署成功,但挂载 GitHub 持续交付失败:{{message}}",deployedButGithubBindFailed:"部署成功,但绑定 GitHub 失败:{{message}}",deploymentStatusUnconfirmed:"连接已中断,当前无法确认部署最终状态。任务可能仍在云端运行,请到 AgentKit 或 Code Pipeline 查看同一任务,避免重复部署。",failedAtStage:"{{action}}失败({{stage}}阶段):{{message}}",noAgentAtEndpoint:"连接成功,但该地址未发现任何 Agent(/list-apps 为空)。",addAgent:"添加 Agent 失败:{{message}}",modelApiKeyRequired:"请填写此模型地址对应的 API Key。"}},Yve={title:"工作区",detail:"工作区详情",create:"新建工作区",editorDescription:"将常用环境组合在一起;同一个环境可以加入多个工作区。",backToList:"返回工作区列表",environmentCount_one:"{{count}} 个环境",environmentCount_other:"{{count}} 个环境",createdAt:"创建时间",updatedAt:"最近更新",basicInfo:"基本信息",namePlaceholder:"例如:内容生产",descriptionPlaceholder:"说明这个工作区的用途",selectedEnvironmentCount:"已选择 {{count}} 个,可在其他工作区中继续复用",searchAvailableEnvironments:"搜索可用环境",searchEnvironments:"搜索环境",noAvailableEnvironments:"还没有可添加的环境",createEnvironmentFirst:"请先在“环境”页面创建并构建环境。",noMatchingEnvironments:"没有匹配的环境",tryAnotherName:"请尝试搜索其他名称。",environmentStatus:{available:"可用",building:"构建中",notBuilt:"未构建"},added:"已添加",saved:"已保存工作区“{{name}}”",resourceType:"工作区资源类型",searchWorkspaces:"搜索工作区",loadFailed:"无法加载工作区",noMatchingWorkspaces:"没有匹配的工作区",tryAnotherNameOrEnvironment:"请尝试搜索其他名称或环境",noEnvironmentAdded:"未添加环境",environmentMissing:"环境缺失",availableFraction:"{{available}}/{{total}} 可用",available:"可用",availableCount:"{{count}} 个可用",updated:"更新",addEnvironment:"添加环境",deleteTitle:"删除工作区",deleteDescription:"确定删除工作区“{{name}}”吗?环境本身不会被删除。",deleted:"已删除工作区“{{name}}”",clipboardPermissionError:"未能读取剪贴板。请允许剪贴板权限,或点击“导入环境”后手动粘贴分享码。",clipboardUnsupported:"当前浏览器无法自动读取剪贴板;请点击“导入环境”后手动粘贴分享码。",codeProjects:"代码项目"},Zve={back:"返回",detailNavigation:"详情导航",noData:"暂无数据",actions:"操作",moreActions:"更多操作 {{label}}",actionsFor:"{{label}} 操作",loading:"资源加载中,请稍候"},Jve={addSkill:"添加 Skill",remove:"移除 {{name}}",confirmRemoveRuntime:"从新版本中移除运行中的 Skill「{{name}}」?",selectedCount:"已加入技能 · {{count}}",close:"关闭{{label}}",sources:{runtime:"运行中来源 · 原样保留,可移除或用同名 Skill 替换",local:"本地",skillspace:"AgentKit Skills 中心",skillhub:"火山 Find Skill 技能广场"},tabs:{local:"本地文件",localShort:"本地文件",skillspace:"AgentKit Skills 中心",skillspaceShort:"AgentKit",skillhub:"火山 Find Skill 技能广场",skillhubShort:"Find Skill"}},exe={tasks:{ppt:"PPT",image:"图片生成",video:"视频生成"},prompts:{ppt:{quarterlyReview:"复盘【季度】经营表现,提炼指标差距、原因与行动建议",projectUpdate:"汇报【项目名称】进展:里程碑、风险、预算和资源诉求",solutionProposal:"为【客户行业】输出解决方案:痛点、架构、实施路径与收益",industryAnalysis:"分析【行业主题】趋势,给出竞争格局、机会与战略建议"},image:{launchVisual:"为【品牌或产品】设计【高级科技】风格的发布会主视觉",ecommercePoster:"生成【产品名称】电商海报,突出【核心卖点】与品牌色",conceptRendering:"呈现【产品或空间】在【使用场景】中的写实概念效果图",socialGraphic:"围绕【传播主题】制作简洁专业的企业社媒配图"},video:{brandFilm:"制作【品牌名称】30 秒宣传片,突出【品牌价值】",productLaunch:"为【产品名称】制作 45 秒发布视频:痛点、功能、场景与行动号召",trainingVideo:"制作【培训主题】企业培训视频,讲清【关键操作或规范】",eventTeaser:"生成【活动名称】20 秒预热视频,包含亮点、时间地点和报名信息"}},firstFrame:"首帧",videoToEdit:"待编辑视频",baseVideo:"基础视频",optimizeSkillPlaceholder:"描述你想优化的技能…",createSkillPlaceholder:"描述你想生成的技能…",createVideoPlaceholder:"描述你想创作的视频…",messageAgentPlaceholder:"向 {{name}} 发消息…",selectAgentFirst:"请先选择智能体",selectSkillFirst:"请先选择需要优化的 Skill",availableSkills:"可用技能",availableSubagents:"可用子 Agent",invokeSkill:"调用技能",useSubagent:"使用子 Agent",loadingCapabilities:"正在读取 Agent 能力…",noMatchingSkills:"当前 Agent 没有匹配技能",noMatchingSubagents:"当前 Agent 没有匹配子 Agent",skillFallbackDescription:"加载并执行该技能",agentFallbackDescription:"将本轮交给该 Agent",skill:"技能",uploadImage:"上传图片",uploadDocument:"上传文档或 PDF",uploadVideo:"上传视频",taskMode:"任务模式",selectTaskMode:"选择任务模式",loadingGenerationModel:"正在加载生成模型",modelUnavailable:"模型不可用",cancelTask:"取消{{task}}任务",stopGenerating:"停止生成",viewVideoProgress:"查看视频生成进度",send:"发送",selectTaskType:"选择任务类型",enterprisePrompts:"{{task}}企业提示词",sessionId:"会话 ID",sessionIdLabel:"会话 ID:",initializing:"初始化中",copied:"已复制",copySessionId:"复制会话 ID",sessionIdCopied:"已复制会话 ID",disclaimer:"回答仅供参考",viewLogs:"查看日志"},txe={selectAgent:"选择 Agent",noLocalAgents:"暂无本地 Agent。",searchRuntime:"搜索 Runtime 名称",mineOnly:"只看我创建的",noRuntimes:"暂无 Runtime。",unsupported:"不支持",createdByMe:"我创建的",connecting:"连接中…",connected:"已连接",connect:"连接",viewInfoFor:"查看 {{name}} 信息",viewInfo:"查看信息",agentAndRuntimeInfo:"Agent 与 Runtime 信息",detailType:"详情类型",agentInfo:"Agent 信息",runtimeInfo:"Runtime 信息",loadingAgentInfo:"读取 Agent 信息…",cannotLoadAgentInfo:"暂时无法读取 Agent 信息",unnamedAgent:"未命名 Agent",subagents:"子 Agent",tools:"工具",skills:"技能",previewUnsupported:"暂不支持预览",mountedComponents:"挂载组件",noMoreAgentInfo:"暂无更多 Agent 配置信息。",local:"本地",model:"模型",status:"状态",memoryMb:"内存 {{value}}MB",instances:"实例 {{min}}~{{max}}",resources:"资源",version:"版本",loadingDetails:"读取详情…",environmentVariables:"环境变量",errors:{notFound:"该 Runtime 已不存在或列表信息已过期,请刷新列表后重试。",accessDenied:"当前账号无权访问该 Runtime,请检查所属 Project 和访问权限。",previewUnsupported:"该 Agent Server 版本暂不支持信息预览。",unavailable:"该 Runtime 暂时无法访问,请确认其状态为“就绪”后重试。",timeout:"加载超时,请重试"},componentKinds:{knowledgebase:"知识库",memory:"记忆",prompt_manager:"提示词管理",example_store:"样例库",run_processor:"运行处理器",tracer:"链路追踪",toolset:"工具集",plugin:"插件",other:"其他"},runtimeStatus:{ready:"就绪",unreleased:"未发布",running:"运行中",active:"运行中",creating:"创建中",pending:"等待中",deploying:"部署中",updating:"更新中",failed:"失败",error:"异常",stopping:"停止中",stopped:"已停止",deleting:"删除中",deleted:"已删除"}},nxe={agent:"智能体",agentTypes:{general:"通用智能体",codex:"Codex","deepseek-harness":"DeepSeek",openclaw:"OpenClaw",hermes:"Hermes"},creator:"创建人",namedAgent:"{{name}} 智能体",storageLocation:"存储位置",currentBrowser:"当前浏览器",region:"地域",viewDeploymentProgress:"查看 {{name}} 部署进度",viewRuntimeDetails:"查看 {{name}} Runtime 详情",viewDetails:"查看 {{name}} 详情",time:"时间",remainingTime:"剩余时间",expiringSoon:"即将清空",sandboxRemaining:"{{hours}} 小时 {{minutes}} 分钟",wakeable:"已休眠",neverExpires:"永不过期",editDraftNamed:"编辑草稿 {{name}}",viewProgress:"查看进度",deleteDraftNamed:"删除草稿 {{name}}",recheckCompatibility:"重新检测 {{name}} 的对话兼容性",connectedNamed:"{{name}} 已连接",wakeAndChat:"唤醒 {{name}} 并开始对话",chatWith:"与 {{name}} 对话",waking:"唤醒中",deploying:"部署中",draft:"草稿",checking:"检测中",chatUnsupported:"不支持对话",checkFailed:"检测失败",creatorFilter:"创建人筛选",agentType:"智能体类型",searchAgents:"搜索智能体",handoff:"接力",agentList:"{{type}}列表",noMatchingAgents:"没有匹配的智能体",adjustSearch:"请尝试调整搜索或筛选条件",noAgentType:"暂无 {{type}}",noGeneralAgents:"暂无通用智能体",createGeneralAgentDescription:"创建一个通用智能体,开始构建和对话",createAgentType:"创建{{type}}",createAgent:"创建智能体",loadingMore:"正在加载更多智能体",scrollForMore:"继续下滑加载更多",allLoaded:"已加载全部智能体",deleteDraftTitle:"删除草稿?",deleteDraftDescription:"删除后将无法恢复“{{name}}”。",deleteDraft:"删除草稿",loadGeneralAgents:"加载通用智能体",loadAgentType:"加载 {{type}}",compatibility:{checking:"正在请求 Runtime /list-apps,以确认该智能体是否支持 Studio 对话。",empty:"Runtime /list-apps 未返回可用的 Agent,暂时无法连接对话。",supported:"Runtime 支持 Studio 对话。",unknownError:"Runtime /list-apps 请求失败,未返回可识别的错误信息。"},sandboxStatus:{ready:"就绪",wakeable:"已休眠",creating:"创建中",starting:"启动中",initializing:"启动中",pending:"等待中",running:"运行中",failed:"异常",error:"异常",stopped:"已停止",expired:"已过期",deleting:"删除中",deleted:"已删除",unknown:"未知状态"},wakingHint:"正在唤醒智能体,可能需要一些时间。"},ixe={library:"技能库",skill:"技能",skills:"技能",skillSpace:"技能空间",sandboxNotConfigured:"管理员未配置 Dev Sandbox",adminNotConfigured:"管理员未配置",totalItems:"共 {{count}} 项",cannotLoadSpaces:"无法加载技能空间",someSpacesFailed:"部分技能空间加载失败",degradedRelationWarning:"部分关联异常,已恢复可读取技能",downloadZip:"下载 ZIP",optimize:"优化",closeSkillDetails:"关闭技能详情",skillId:"技能 ID",allFiles:"完整文件",loadingSkillContent:"正在读取技能内容…",noSkillContent:"该技能暂无 SKILL.md 内容",addSkill:"添加技能",localUpload:"本地上传",localUploadDescription:"选择 ZIP 文件,校验通过后上传到技能空间",autoCreate:"自动创建",autoCreateDescription:"选择模型和风格,通过对话生成技能",createSkill:"创建技能",optimizeNamed:"优化 {{name}}",deleteSkillConfirm:"确定删除整个 Skill“{{name}}”吗?此操作会影响所有引用它的空间。",deleteSpaceConfirm:"确定删除 Skill 空间“{{name}}”吗?请先确认空间中的技能已删除。",manageSpaceDescription:"管理空间中的技能并创建新的版本",backToSpaces:"返回技能空间列表",overview:"概览",skillCount:"技能数量",skillCountValue_one:"{{count}} 技能",skillCountValue_other:"{{count}} 技能",updatedAt:"更新时间",skillsInSpace:"{{name}}中的技能",searchSkills:"搜索技能",cannotLoadSkills:"无法加载技能",noMatchingSkills:"没有匹配的技能",noSkills:"暂无技能",tryAnotherName:"请尝试搜索其他名称",emptySkillsDescription:"本地上传 Skill,或自动创建",actions:"操作",spaceDetails:"技能空间详情",editSpace:"编辑空间",deleteSpace:"删除空间",searchSpaces:"搜索技能空间",spaceList:"技能空间列表",noMatchingSpaces:"没有匹配的技能空间",createSpace:"新建技能空间",newSpace:"新建空间",loadingMoreSpaces:"正在加载更多技能空间",scrollForMore:"继续下滑加载更多",allSpacesLoaded:"已加载全部技能空间",errors:{loadSpaces:"读取技能空间失败,请稍后重试",loadSkills:"读取技能失败,请稍后重试",loadSkillDetails:"读取技能详情失败,请稍后重试",deleteSkill:"删除 Skill 失败",deleteSpace:"删除 Skill 空间失败",downloadSkill:"下载 Skill 失败"},status:{active:"可用",available:"可用",creating:"创建中",disabled:"已停用",enabled:"已启用",failed:"异常",inactive:"未启用",pending:"等待中",published:"已发布",ready:"就绪",released:"已发布",running:"运行中",success:"正常",unavailable:"不可用",unreleased:"未发布",updating:"更新中",unknown:"未知"},sharedSpace:"企业共享空间",sharedDescription:"面向企业全员开放的技能,由管理员统一发布和维护",sharedVisibility:"全员可见",sharedPreparing:"正在准备共享空间",sharedLoadFailed:"共享空间加载失败",sharedEmpty:"暂无共享技能,管理员发布后会显示在这里",requestPublication:"申请公开",reviewSubmitting:"提交中…",reviewSubmitted:"已申请",reviewFailed:"申请公开失败",reviewStatusFailed:"审核状态加载失败",reviewRetry:"重新申请",reviewPending:"待审核",reviewApproving:"发布中",reviewApproved:"已公开",reviewReturned:"已退回",reviewHistory:"审核记录",skillDetailSections:"技能详情内容",versions:{title:"版本管理",refresh:"刷新",uploading:"上传中…",upload:"上传新版本",close:"关闭",hint:"新版本不会替换已公开版本,审核通过后才会公开;ZIP 中的技能名称需与原技能一致",loading:"正在加载版本…",loadFailed:"无法加载版本",filesFailed:"无法加载版本文件",uploadFailed:"上传新版本失败",submitFailed:"提交申请失败",retry:"重试",empty:"暂无版本",current:"当前版本",notSubmitted:"未申请公开",submitting:"提交中…",submit:"申请公开",processing:"版本状态:{{status}}",filesLoading:"正在加载文件…",filesEmpty:"暂无文件",history:"历史审核记录",shared:"已公开"},author:"作者",authorName:"作者:{{name}}"},rxe={library:"知识库",createBase:"新建知识库",editBase:"编辑知识库",invalidName:"名称必须以字母开头,且只能包含字母、数字和下划线。",nameHelp:"以字母开头,仅支持字母、数字和下划线,最多 48 个字符。",optionalDescription:"描述(可选)",descriptionOnly:"AgentKit 当前仅支持更新知识库描述。",previewWeb:"预览网页内容",addData:"添加数据",openOriginalWeb:"打开原网页",backToEdit:"返回修改",confirmAdd:"确认添加",source:"知识来源",image:"图片",documentFile:"文档文件",webPage:"在线网页",webUrl:"网页 URL",generatingWebPreview:"正在抓取网页并生成 Markdown 预览",selectFile:"选择知识文件",selectOrDropFile:"选择文件或拖拽到这里",selectedFile:"{{size}} · 点击可重新选择",imageFileHelp:"支持 PNG、JPG 和 JPEG,单个文件不超过 200 MB",documentFileHelp:"支持 PDF、PPTX、DOCX、XLSX 和 TXT,单个文件不超过 200 MB",uploadingFile:"正在上传文件并添加到知识库",optionalName:"名称(可选)",optionalType:"类型(可选)",generatePreview:"生成预览",uploadFile:"上传文件",editMetadata:"编辑知识 Metadata",knowledge:"知识",field:"字段",value:"值",backToList:"返回知识库列表",metadataJson:"元数据(JSON)",provider:"服务提供方",knowledgeId:"知识库 ID",project:"项目",creator:"创建者",data:"数据",deleteInvalidAssociation:"删除失效关联",noData:"这个知识库还没有数据",addFirstData:"添加第一项数据",format:"格式",size:"大小",searchData:"搜索数据",searchLibraryData:"搜索知识库数据",associationInvalid:"关联已失效",providerMissing:"底层 Provider 知识库已不存在",noMatchingData:"没有匹配的数据",loadingMoreData:"正在加载更多数据",retryLoading:"重试加载",details:"知识库详情",searchBases:"搜索知识库",someBasesFailed:"部分知识库暂时无法加载,已展示其余可用内容。",noMatchingBases:"没有匹配的知识库",noManagePermission:"您没有管理此知识库的权限",loadingMoreBases:"正在加载更多知识库",deleteBaseTitle:"删除知识库?",deleteBaseDescription:"将删除 {{name}} 的 AgentKit 关联;如果它由 Studio 创建,也会同时删除 Provider 资源。此操作无法撤销。",deleteDocumentTitle:"删除知识?",deleteDocumentDescription:"将从 Provider 知识库中删除 {{name}},此操作无法撤销。",preview:{processingTitle:"数据正在处理中",processingDetail:"知识库完成解析后即可预览,请稍后重新加载。",failedTitle:"数据解析失败",failedDetail:"请检查源文件或网页地址后重新添加,也可以重新加载最新状态。",noParsedTitle:"暂时没有可预览的解析内容",noParsedDetail:"此类文件会在知识库完成解析后显示文本、表格或页面图片。",noMediaTitle:"暂时没有可预览的媒体内容",noMediaDetail:"知识库尚未返回可访问的媒体预览,请稍后重新加载。",noDataTitle:"暂无可预览的数据内容",noDataDetail:"知识库尚未返回解析结果,请稍后重新加载。",attachmentError:"附件无法预览,请稍后重试。",imageAlt:"知识数据图片",audioUnsupported:"当前浏览器不支持音频预览。",videoUnsupported:"当前浏览器不支持视频预览。",namedPdf:"{{name}} PDF 预览",pdf:"PDF 预览",openPdf:"无法显示时,在新窗口打开 PDF",fileUnsupported:"当前格式暂不支持直接在线预览,已优先显示解析后的内容。",openOriginalFile:"打开原文件",loading:"正在加载数据预览",openOriginalHint:"您可以打开原网页查看来源内容。",chunk:"片段 {{index}}",loadingMore:"正在加载更多",loadMore:"加载更多"},errors:{fileTooLarge:"单个文件不能超过 200 MB",invalidImageType:"请选择 PNG、JPG 或 JPEG 图片",invalidDocumentType:"请选择 PDF、PPTX、DOCX、XLSX 或 TXT 文件",createBase:"创建知识库失败",updateBase:"更新知识库失败",metadataObject:"Metadata 必须是 JSON 对象",metadataFormat:"Metadata 格式错误",noWebPreview:"网页没有可预览的 Markdown 内容",addWeb:"添加网页失败",previewWeb:"生成网页预览失败",uploadFile:"上传文件失败",updateDocument:"更新知识失败",loadPreview:"加载数据预览失败",loadMoreBases:"加载更多知识库失败",loadBases:"加载知识库失败",loadMoreData:"加载更多数据失败",loadData:"加载数据失败",deleteBase:"删除知识库失败",deleteDocument:"删除知识失败"}},xQe={common:Lve,agentKitPromo:$ve,systemInfo:Fve,agentWorkspace:Bve,environmentCenter:Uve,deploymentSelect:Qve,deploymentError:zve,studioBuildProgress:Vve,cloudEnvironment:Hve,githubCicd:qve,feishuDeployment:Wve,deploymentResources:Kve,studioUpdate:Gve,projectPreview:Xve,workspace:Yve,resourceCollection:Zve,skillSourcePicker:Jve,composer:exe,agentSelector:txe,myAgents:nxe,skillCenter:ixe,knowledge:rxe},wQe=Object.freeze(Object.defineProperty({__proto__:null,agentKitPromo:$ve,agentSelector:txe,agentWorkspace:Bve,cloudEnvironment:Hve,common:Lve,composer:exe,default:xQe,deploymentError:zve,deploymentResources:Kve,deploymentSelect:Qve,environmentCenter:Uve,feishuDeployment:Wve,githubCicd:qve,knowledge:rxe,myAgents:nxe,projectPreview:Xve,resourceCollection:Zve,skillCenter:ixe,skillSourcePicker:Jve,studioBuildProgress:Vve,studioUpdate:Gve,systemInfo:Fve,workspace:Yve},Symbol.toStringTag,{value:"Module"})),sxe="用户管理",oxe="{{count}} 位成员",axe="用户",lxe="角色",cxe="账号状态",uxe="最近登录",dxe="操作",fxe="更改角色",hxe="关闭",pxe="保存角色",mxe="正在保存…",gxe="取消",bxe="返回",yxe="用户池",vxe="火山引擎 Identity",xxe="搜索姓名、邮箱或用户 ID",wxe="搜索",Oxe="筛选角色",kxe="全部角色",Sxe="刷新",Exe="正在读取用户…",Cxe="更新于 {{time}}",Txe="已将 {{name}} 设置为{{role}}",Axe="重试",_xe="你",jxe="初始超级管理员",Nxe="初始超级管理员受保护,不能在此降级",Rxe="保存后,对方刷新 Studio 即可使用新的权限",Ixe="角色需要重新确认",Pxe="没有匹配的用户",Dxe="尝试其他关键词或角色",Mxe="用户登录或加入当前用户池后会显示在这里",Lxe="共 {{count}} 位用户",$xe="上一页",Fxe="下一页",Bxe="尚未登录",Uxe="未提供",Qxe={super_admin:"超级管理员",admin:"管理员",developer:"开发者",user:"普通用户"},zxe={super_admin:"管理所有资源,并管理用户和分配角色",admin:"管理 Studio 资源",developer:"开发智能体并管理自己的资源",user:"使用智能体和个人功能"},Vxe={EXTERNAL_PROVIDER:"正常",CONFIRMED:"正常",NORMAL:"正常",ENABLED:"正常",ACTIVE:"正常",UNCONFIRMED:"待验证",DISABLED:"已停用",FORBIDDEN:"已禁用",LOCKED:"已锁定",SUSPENDED:"已暂停",FORCE_CHANGE_PASSWORD:"需要修改密码"},Hxe={request_failed:"请求未完成,请刷新列表确认当前状态后重试",invalid_response:"用户服务返回异常,请刷新后重试",identity_unavailable:"暂时无法访问 Identity,请稍后重试或检查服务权限",identity_resource_missing:"用户或用户池已不存在,请刷新列表",super_administrator_required:"只有超级管理员可以管理用户",sign_in_required:"请登录后重试",user_not_in_pool:"当前账号不属于此用户池",user_disabled:"当前账号已停用",protected_administrator:"不能降低初始超级管理员的权限",cannot_demote_self:"不能降低自己的超级管理员权限",role_change_conflict:"角色已发生变化,请关闭弹窗并刷新列表后重试",cross_origin_request:"请在当前 Studio 页面内修改角色"},OQe={title:sxe,memberCount:oxe,user:axe,role:lxe,status:cxe,lastLogin:uxe,actions:dxe,changeRole:fxe,close:hxe,save:pxe,saving:mxe,cancel:gxe,back:bxe,pool:yxe,volcengineIdentity:vxe,searchPlaceholder:xxe,search:wxe,filterRole:Oxe,allRoles:kxe,refresh:Sxe,loading:Exe,updatedAt:Cxe,saved:Txe,retry:Axe,you:_xe,initialAdministrator:jxe,protectedExplanation:Nxe,effectiveAfterRefresh:Rxe,roleConflict:Ixe,noUsers:Pxe,tryAnotherSearch:Dxe,poolEmpty:Mxe,resultCount:Lxe,previous:$xe,next:Fxe,neverLoggedIn:Bxe,unknown:Uxe,roles:Qxe,descriptions:zxe,states:Vxe,errors:Hxe},kQe=Object.freeze(Object.defineProperty({__proto__:null,actions:dxe,allRoles:kxe,back:bxe,cancel:gxe,changeRole:fxe,close:hxe,default:OQe,descriptions:zxe,effectiveAfterRefresh:Rxe,errors:Hxe,filterRole:Oxe,initialAdministrator:jxe,lastLogin:uxe,loading:Exe,memberCount:oxe,neverLoggedIn:Bxe,next:Fxe,noUsers:Pxe,pool:yxe,poolEmpty:Mxe,previous:$xe,protectedExplanation:Nxe,refresh:Sxe,resultCount:Lxe,retry:Axe,role:lxe,roleConflict:Ixe,roles:Qxe,save:pxe,saved:Txe,saving:mxe,search:wxe,searchPlaceholder:xxe,states:Vxe,status:cxe,title:sxe,tryAnotherSearch:Dxe,unknown:Uxe,updatedAt:Cxe,user:axe,volcengineIdentity:vxe,you:_xe},Symbol.toStringTag,{value:"Module"})),qxe="网站集成",Wxe="将 AgentKit Runtime 以悬浮聊天窗口嵌入网站",Kxe="返回自动化列表",Gxe="添加网站",Xxe="正在加载 Runtime",Yxe="选择 Runtime",Zxe="网站域名",Jxe="例如 xxxx.com 或 localhost:5173",ewe="正在生成",twe="生成 Token",nwe="已添加网站",iwe="{{count}} 个",rwe="{{count}} 个",swe="正在加载网站集成",owe="还没有网站集成",awe="选择 Runtime 并输入网站域名即可生成 Token",lwe="引入方法",cwe="将下面代码放到网页的 body 结束标签前",uwe="已复制",dwe="复制代码",fwe="添加网站后会在这里生成引入代码。",hwe="确定删除 {{domain}} 的网站集成吗?",pwe={load:"加载网站集成失败",create:"创建网站集成失败",delete:"删除网站集成失败",noConversationalAgent:"该 Runtime 暂未发现可对话的 Agent"},mwe={requestFailed:"请求失败 ({{status}})",greeting:"您好,有什么可以帮您?",sessionFailed:"无法建立对话会话",unauthorized:"当前网站未获得对话授权",conversationFailed:"对话请求失败,请稍后重试",open:"打开智能体对话",close:"关闭智能体对话",panelLabel:"智能体对话面板",assistant:"智能体助手",online:"在线对话"},SQe={title:qxe,description:Wxe,backToAutomations:Kxe,addWebsite:Gxe,loadingRuntime:Xxe,selectRuntime:Yxe,websiteDomain:Zxe,domainPlaceholder:Jxe,generating:ewe,generateToken:twe,addedWebsites:nwe,websiteCount_one:iwe,websiteCount_other:rwe,loadingIntegrations:swe,delete:"删除",emptyTitle:owe,emptyDescription:awe,embedMethod:lwe,embedInstructions:cwe,copied:uwe,copyCode:dwe,embedHint:fwe,confirmDelete:hwe,errors:pwe,widget:mwe},EQe=Object.freeze(Object.defineProperty({__proto__:null,addWebsite:Gxe,addedWebsites:nwe,backToAutomations:Kxe,confirmDelete:hwe,copied:uwe,copyCode:dwe,default:SQe,description:Wxe,domainPlaceholder:Jxe,embedHint:fwe,embedInstructions:cwe,embedMethod:lwe,emptyDescription:awe,emptyTitle:owe,errors:pwe,generateToken:twe,generating:ewe,loadingIntegrations:swe,loadingRuntime:Xxe,selectRuntime:Yxe,title:qxe,websiteCount_one:iwe,websiteCount_other:rwe,websiteDomain:Zxe,widget:mwe},Symbol.toStringTag,{value:"Module"})),gwe={types:{all:"全部类型",document:"文档",image:"图片",video:"视频"},previewArtifact:"预览 {{name}}",moreActions:"更多操作 {{name}}",actionMenu:"{{name}} 操作",download:"下载",downloading:"下载中",edit:"编辑信息",delete:"删除产物",previewFailed:"无法预览“{{name}}”:{{message}}",downloadStarted:"已开始下载 {{name}}",downloadFailed:"无法下载“{{name}}”:{{message}}",updated:"已更新 {{name}}",deleted:"已删除 {{name}}",deleteFailed:"无法删除“{{name}}”:{{message}}",typeFilter:"产物类型",searchAria:"搜索产物",searchPlaceholder:"搜索产物或会话",retry:"重试",close:"关闭",listAria:"产物列表",loadFailed:"产物加载失败",loadDetailFallback:"请检查存储配置后重试。",reload:"重新加载",noMatch:"没有找到匹配的产物",noArtifacts:"您还没有任何产物",searchHint:"请尝试搜索其他名称或切换类型",emptyHint:"聊天中生成的产物会自动显示在这里",columns:{name:"名称",source:"来源",updatedAt:"修改时间",actions:"操作"},loadingMore:"正在加载更多产物",unknownTime:"时间未知",preview:{close:"关闭预览",meta:"{{type}} / 版本 {{version}}",loading:"正在加载预览",alt:"{{name}} 预览",loadFailed:"预览加载失败,请稍后重试或下载查看",unsupported:"当前格式暂不支持在线预览,请下载查看",sourceAria:"产物来源",agent:"智能体",session:"会话",tool:"生成工具",createdAt:"生成时间",fileSize:"文件大小",tags:"标签",viewSession:"查看会话"},deleteDialog:{title:"删除产物?",description:"“{{name}}”将从产物库永久删除,聊天记录不会受到影响。",deleting:"删除中",confirm:"删除",close:"关闭删除确认框"},api:{withStatus:"{{message}}({{status}})",listFailed:"读取产物库失败",syncFailed:"同步聊天产物失败",updateFailed:"更新产物失败",deleteFailed:"删除产物失败",downloadFailed:"下载产物失败"}},bwe={unknownSource:"未知来源",unknownCreator:"未知创建者"},ywe={nameRequired:"请输入产物名称",tooManyTags:"标签最多 {{max}} 个",tagTooLong:"单个标签不能超过 {{max}} 个字符",title:"编辑产物信息",subtitle:"内容文件不会被修改",close:"关闭编辑框",name:"名称",description:"描述",descriptionPlaceholder:"补充用途、版本或使用说明",tags:"标签",tagsPlaceholder:"使用逗号分隔,最多 {{max}} 个",cancel:"取消",saving:"保存中",save:"保存"},vwe={change:{added:"新增",modified:"修改",deleted:"删除"},noChanges:"两个版本的源码没有差异",chooseFile:"从左侧选择文件以查看代码",compareTitle:"版本对比",workspaceTitle:"源码工作区",projectFallback:"Agent 项目",switchTheme:"切换源码主题",switchThemeTitle:"切换为{{theme}}主题",themes:{dark:"深色",light:"浅色"},closeWorkspace:"关闭源码工作区",close:"关闭",changedFiles:"变更文件",projectFiles:"项目文件",changes:"变更",files:"文件",openFiles:"打开的文件",noFileSelected:"未选择文件",comparisonDirection:"对比方向",before:"优化前",after:"优化后",loadingEditor:"正在加载编辑器…",changedFileCount_one:"{{count}} 个文件有变更",changedFileCount_other:"{{count}} 个文件有变更",fileCount_one:"{{count}} 个文件",fileCount_other:"{{count}} 个文件",lineCount_one:"{{count}} 行 · UTF-8",lineCount_other:"{{count}} 行 · UTF-8",viewSource:"查看源码",viewSourceAria:"查看和编辑项目源码"},xwe={nav:"搜索",selectAgent:"请选择 Agent",checkingCapabilities:"正在检测 Agent 能力",notMounted:"当前 Agent 未挂载{{label}}",sources:{session:"会话",web:"网络",knowledge:"知识库",memory:"长期记忆"},webDescription:"通过 web_search 工具检索",backendLocal:"本地",failed:"搜索失败:{{message}}",placeholder:{selectAgent:"请先选择 Agent",web:"在网络中检索",knowledge:"在 {{name}} 中检索",knowledgeFallback:"当前 Agent 的知识库",memory:"在 {{name}} 中检索",memoryFallback:"当前用户的长期记忆",session:"在当前 Agent 的会话中检索"},sourceTypeAria:"搜索类型:{{label}}",notSelected:"未选择",sourceType:"搜索类型",selectSource:"选择搜索类型",noAgentHint:"选择一个 Agent 后,即可检索会话、网络及其挂载的数据源。",loadingCapabilities:"正在读取当前 Agent 的检索能力…",sourceUnavailable:"当前 Agent 未挂载该数据源",instructions:{web:"输入关键词后回车或点击按钮,通过 web_search 工具检索。",knowledge:"输入问题,检索当前 Agent 挂载的知识库。",memory:"输入线索,检索当前用户跨会话保存的长期记忆。",session:"输入关键词后回车或点击按钮,搜索当前 Agent 的会话。"},noResults:"未找到匹配“{{query}}”的结果。",knowledgeFragment:"知识片段 {{index}}",memoryFragment:"记忆片段 {{index}}"},wwe={title:"开发者资源",sections:{documentation:{title:"相关链接",description:"查看开发文档与 AgentKit 常用入口"},bestPractices:{title:"最佳实践",description:"参考开发、调试与部署经验"},showcases:{title:"案例展示",description:"探索 AgentKit 应用案例"}},links:{veadkDocs:"VeADK 文档",cliDocs:"AgentKit CLI 文档",platformDocs:"AgentKit 平台文档",console:"AgentKit 控制台"},articles:{veadkDevelopment:{title:"使用 VeADK 开发并部署智能体",description:"使用 VeADK 构建 Agent,并部署至 AgentKit 智能体运行时。"},cliDevelopment:{title:"使用 AgentKit CLI 开发并部署智能体",description:"通过 AgentKit CLI 创建项目、调试 Agent,并完成部署。"},coverAlt:"{{title}}文章封面"},showcases:{researchAssistant:{title:"多智能体研究助手",description:"由多个专业 Agent 协同完成资料检索、分析和结论整理。"},multimodalAnalysis:{title:"多模态内容分析",description:"在统一会话中理解图片、文档和视频内容。"},customerService:{title:"智能客服工作台",description:"结合知识检索与工具调用处理复杂的客户服务任务。"},webSearch:{title:"联网搜索 Agent",description:"检索实时网页内容,并将信息整理为可追溯的回答。"},a2uiApp:{title:"A2UI 交互应用",description:"让 Agent 根据任务过程生成可交互的前端界面。"},previewAlt:"{{title}}界面预览"}},Owe={title:"资源库",untitledSession:"未命名会话",categoryAria:"资源库分类",regionAria:"区域",tabs:{skills:"技能库",knowledge:"知识库",artifacts:"产物"}},kwe={title:"管理 Agent",subtitle:"列出你有权管理的 AgentKit Runtime",mainAgentOnly:"仅显示主 Agent(控制面信息)。",deleteConfirm:'确定删除 Agent "{{name}}"?该 Runtime 将被永久删除。',regionFilterTitle:"按区域筛选",regionFilterAria:"区域筛选",regionAria:"区域",refresh:"刷新",loading:"加载中…",empty:"暂无你部署的 Agent。",connected:"已连接",connect:"连接到此 Agent",deleteRuntime:"删除该 Runtime",loadingDetail:"读取详情…",agentStructure:"Agent 结构",secretHidden:"敏感值已隐藏,点击显示",revealSecret:"显示 {{key}} 的值",fields:{model:"模型",description:"描述",status:"状态信息",project:"项目",version:"版本",resources:"资源",memory:"记忆",tool:"工具",knowledge:"知识",mcpToolset:"MCP 工具集",updatedAt:"更新时间"},resource:{memory:"内存 {{value}}MB",instances:"实例 {{min}}~{{max}}",concurrency:"并发 {{value}}"},environmentVariables:"环境变量",unnamed:"(未命名)"},Swe={mainAgent:"主 Agent",subAgent:"子 Agent {{index}}",itemCount_one:"{{count}} 项",itemCount_other:"{{count}} 项",info:"Agent 信息",infoAndTopology:"Agent 信息与拓扑",loadingInfo:"正在读取 Agent 信息…",unnamedAgent:"未命名 Agent",tools:"工具",toolList:"工具列表",studioTool:"Studio Tool",removeTool:"移除工具 {{name}}",remove:"移除",notConfigured:"未配置",addStudioTool:"添加 Studio 工具",addStudioToolHere:"在此对话中添加 Studio 工具",skills:"技能",skillList:"技能列表",previewUnsupported:"暂不支持预览",sessionEnvironment:"会话环境",environment:"环境",agentCanvas:"Agent 画布",topology:"结构拓扑",viewCanvasFullscreen:"全屏查看 Agent 画布",viewFullscreen:"全屏查看",executionCanvas:"Agent 执行画布",fullscreenExecutionCanvas:"全屏 Agent 执行画布",closeFullscreenCanvas:"关闭全屏画布",close:"关闭",capabilitiesSubtitle:"能力与协作拓扑",closeInfo:"关闭 Agent 信息",infoUnavailable:"暂时无法读取 Agent 信息。"},Ewe={mountFailed:"挂载环境失败",closeDialog:"关闭环境弹窗",addTitle:"添加环境",description:"选择当前会话允许 Agent 使用的 Sandbox 环境",closeAdd:"关闭添加环境",searchAria:"搜索环境",searchPlaceholder:"搜索环境名称或能力",availableAria:"可用环境与工作区",loading:"正在读取可用环境…",noMatch:"没有匹配的环境或工作区",workspaces:"工作区",reuseAll:"复用工作区中的全部可用环境",availableEnvironmentCount_one:"{{count}} 个可用环境",availableEnvironmentCount_other:"{{count}} 个可用环境",selectWorkspace:"选择工作区 {{name}}",environments:"环境",includedByWorkspaces:"已由工作区 {{names}} 包含",nameSeparator:"、",selectEnvironment:"选择环境 {{name}}",selectedWorkspaceCount_one:"{{count}} 个工作区",selectedWorkspaceCount_other:"{{count}} 个工作区",coveredEnvironmentCount_one:"{{count}} 个环境",coveredEnvironmentCount_other:"{{count}} 个环境",selectionSummary:"已选择 {{workspaces}},覆盖 {{environments}}",cancel:"取消",mounting:"正在挂载…",confirm:"确认添加",mountedAria:"已挂载环境",environmentCount_one:"{{count}} 个环境",environmentCount_other:"{{count}} 个环境",removeWorkspace:"移除工作区 {{name}}",remove:"移除",removeEnvironment:"移除环境 {{name}}",add:"添加环境",addMore:"添加更多环境",addForSession:"为当前 Session 添加环境",loadingAvailable:"正在加载可用环境…",empty:"暂无可用的 AIO Sandbox 环境。"},Cwe={loading:{searching:"正在查找已有环境",creating:"环境初始化中",connecting:"正在连接已有环境"},initializationFailed:"AgentKit CLI 环境初始化失败,当前状态:{{status}}。",sessionExpired:"AgentKit CLI Session 不存在或已过期,请重试。",initializationTimeout:"AgentKit CLI 环境初始化超时,请稍后重试。",nonPersistent:"非持久化环境",recyclingHoursMinutes:"{{hours}} 小时 {{minutes}} 分钟后环境回收",recyclingMinutes:"{{minutes}} 分钟后环境回收",connectionError:`无法连接 Studio 服务,未收到服务端响应。
-原始错误:{{message}}`,unavailable:"连接不可用",requestFailed:"AgentKit CLI 请求失败",retry:"重试",terminalTitle:"AgentKit CLI 终端"},Twe={labels:{coding:"智能编程",get_city_weather:"城市天气查询",get_location_weather:"位置天气查询",web_fetch:"网页内容获取",studio_write_artifact:"保存会话产物"},closeDialog:"关闭弹窗",title:"添加 Studio 工具",description:"由 Studio BFF 为 {{agentName}} 的当前会话执行,Runtime 无需预装",close:"关闭添加 Studio 工具",searchAria:"搜索 Studio 工具",searchPlaceholder:"搜索名称或工具标识",availableAria:"可用 Studio 工具",loading:"正在读取 Studio 工具…",noMatch:"没有匹配的 Studio 工具",remove:"移除",add:"添加"},Awe={artifactLibrary:gwe,resourceMetadata:bwe,artifactEdit:ywe,codeBrowser:vwe,search:xwe,developerResources:wwe,library:Owe,manageAgents:kwe,agentTopology:Swe,sessionEnvironment:Ewe,agentKitCli:Cwe,studioTools:Twe},CQe=Object.freeze(Object.defineProperty({__proto__:null,agentKitCli:Cwe,agentTopology:Swe,artifactEdit:ywe,artifactLibrary:gwe,codeBrowser:vwe,default:Awe,developerResources:wwe,library:Owe,manageAgents:kwe,resourceMetadata:bwe,search:xwe,sessionEnvironment:Ewe,studioTools:Twe},Symbol.toStringTag,{value:"Module"})),M9=["zh-CN","en-US"],sC="en-US",_we="agentkit.studio.locale",TQe={"zh-CN":{dir:"ltr",nativeName:"简体中文"},"en-US":{dir:"ltr",nativeName:"English"}};function oC(e){if(!e)return null;const t=e.trim().replace(/_/g,"-").toLowerCase(),n=M9.find(i=>i.toLowerCase()===t);return n||(t==="zh"||t.startsWith("zh-")?"zh-CN":t==="en"||t.startsWith("en-")?"en-US":null)}function da(e,t){const n=(e==null?void 0:e.trim())??"";if(!n)return"";const i=new RegExp("\\p{Script=Han}","u").test(n);return t.toLowerCase().startsWith("zh")===i?n:""}function AQe(){if(typeof window>"u")return null;try{return oC(window.localStorage.getItem(_we))}catch{return null}}function _Qe(){if(typeof window>"u")return[];const e=window.navigator;return e?e.languages.length>0?e.languages:e.language?[e.language]:[]:[]}function jQe(){const e=AQe();if(e)return e;for(const t of _Qe()){const n=oC(t);if(n)return n}return sC}function NQe(e){if(!(typeof window>"u"))try{window.localStorage.setItem(_we,e)}catch{}}function jwe(e){typeof document>"u"||(document.documentElement.lang=e,document.documentElement.dir=TQe[e].dir)}const $n=e=>typeof e=="string",K1=()=>{let e,t;const n=new Promise((i,r)=>{e=i,t=r});return n.resolve=e,n.reject=t,n},FM=e=>e==null?"":String(e),RQe=(e,t,n)=>{e.forEach(i=>{t[i]&&(n[i]=t[i])})},IQe=/###/g,GW=e=>e&&e.includes("###")?e.replace(IQe,"."):e,XW=e=>!e||$n(e),wk=(e,t,n)=>{const i=$n(t)?t.split("."):t;let r=0;for(;r{const{obj:i,k:r}=wk(e,t,Object);if(i!==void 0||t.length===1){i[r]=n;return}let s=t[t.length-1],a=t.slice(0,t.length-1),l=wk(e,a,Object);for(;l.obj===void 0&&a.length;)s=`${a[a.length-1]}.${s}`,a=a.slice(0,a.length-1),l=wk(e,a,Object),l!=null&&l.obj&&typeof l.obj[`${l.k}.${s}`]<"u"&&(l.obj=void 0);l.obj[`${l.k}.${s}`]=n},PQe=(e,t,n,i)=>{const{obj:r,k:s}=wk(e,t,Object);r[s]=r[s]||[],r[s].push(n)},Pj=(e,t)=>{const{obj:n,k:i}=wk(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},DQe=(e,t,n)=>{const i=Pj(e,n);return i!==void 0?i:Pj(t,n)},Nwe=(e,t,n)=>{for(const i in t)i!=="__proto__"&&i!=="constructor"&&(Object.prototype.hasOwnProperty.call(e,i)?$n(e[i])||e[i]instanceof String||$n(t[i])||t[i]instanceof String?n&&(e[i]=t[i]):Nwe(e[i],t[i],n):e[i]=t[i]);return e},sh=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),MQe={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},LQe=e=>$n(e)?e.replace(/[&<>"'\/]/g,t=>MQe[t]):e;class $Qe{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const i=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,i),this.regExpQueue.push(t),i}}const FQe=[" ",",","?","!",";"],BQe=new $Qe(20),UQe=(e,t,n)=>{t=t||"",n=n||"";const i=FQe.filter(a=>!t.includes(a)&&!n.includes(a));if(i.length===0)return!0;const r=BQe.getRegExp(`(${i.map(a=>a==="?"?"\\?":a).join("|")})`);let s=!r.test(e);if(!s){const a=e.indexOf(n);a>0&&!r.test(e.substring(0,a))&&(s=!0)}return s},x6=(e,t,n=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const i=t.split(n);let r=e;for(let s=0;se==null?void 0:e.replace(/_/g,"-"),QQe={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,i;(i=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||i.call(n,console,t)}};class Dj{constructor(t,n={}){this.init(t,n)}init(t,n={}){this.prefix=n.prefix||"i18next:",this.logger=t||QQe,this.options=n,this.debug=n.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,n,i,r){return r&&!this.debug?null:(t=t.map(s=>$n(s)?s.replace(/[\r\n\x00-\x1F\x7F]/g," "):s),$n(t[0])&&(t[0]=`${i}${this.prefix} ${t[0]}`),this.logger[n](t))}create(t){return new Dj(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new Dj(this.logger,t)}}var xf=new Dj;class hI{constructor(){this.observers={}}on(t,n){return t.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(n)||0;this.observers[i].set(n,r+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}once(t,n){const i=(...r)=>{n(...r),this.off(t,i)};return this.on(t,i),this}emit(t,...n){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([r,s])=>{for(let a=0;a{for(let a=0;a-1&&this.options.ns.splice(n,1)}getResource(t,n,i,r={}){var u,d;const s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,a=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let l;t.includes(".")?l=t.split("."):(l=[t,n],i&&(Array.isArray(i)?l.push(...i):$n(i)&&s?l.push(...i.split(s)):l.push(i)));const c=Pj(this.data,l);return!c&&!n&&!i&&t.includes(".")&&(t=l[0],n=l[1],i=l.slice(2).join(".")),c||!a||!$n(i)?c:x6((d=(u=this.data)==null?void 0:u[t])==null?void 0:d[n],i,s)}addResource(t,n,i,r,s={silent:!1}){const a=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator;let l=[t,n];i&&(l=l.concat(a?i.split(a):i)),t.includes(".")&&(l=t.split("."),r=n,n=l[1]),this.addNamespaces(n),YW(this.data,l,r),s.silent||this.emit("added",t,n,i,r)}addResources(t,n,i,r={silent:!1}){for(const s in i)($n(i[s])||Array.isArray(i[s]))&&this.addResource(t,n,s,i[s],{silent:!0});r.silent||this.emit("added",t,n,i)}addResourceBundle(t,n,i,r,s,a={silent:!1,skipCopy:!1}){let l=[t,n];t.includes(".")&&(l=t.split("."),r=i,i=n,n=l[1]),this.addNamespaces(n);let c=Pj(this.data,l)||{};a.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?Nwe(c,i,s):c={...c,...i},YW(this.data,l,c),a.silent||this.emit("added",t,n,i)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var Rwe={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,i,r){return e.forEach(s=>{var a;t=((a=this.processors[s])==null?void 0:a.process(t,n,i,r))??t}),t}};const Iwe=Symbol("i18next/PATH_KEY");function zQe(){const e=[],t=Object.create(null);let n;return t.get=(i,r)=>{var s;return(s=n==null?void 0:n.revoke)==null||s.call(n),r===Iwe?e:(e.push(r),n=Proxy.revocable(i,t),n.proxy)},Proxy.revocable(Object.create(null),t).proxy}function Kb(e,t){const{[Iwe]:n}=e(zQe()),i=(t==null?void 0:t.keySeparator)??".",r=(t==null?void 0:t.nsSeparator)??":",s=(t==null?void 0:t.enableSelector)==="strict";if(n.length>1&&r){const a=t==null?void 0:t.ns,l=s?Array.isArray(a)?a:a?[a]:null:Array.isArray(a)?a:null;if(l&&(s?l:l.length>1?l.slice(1):[]).includes(n[0]))return`${n[0]}${r}${n.slice(1).join(i)}`}return n.join(i)}const BM=e=>!$n(e)&&typeof e!="boolean"&&typeof e!="number";class Mj extends hI{constructor(t,n={}){super(),RQe(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=xf.create("translator"),this.checkedLoadedFor={}}changeLanguage(t){t&&(this.language=t)}exists(t,n={interpolation:{}}){const i={...n};if(t==null)return!1;const r=this.resolve(t,i);if((r==null?void 0:r.res)===void 0)return!1;const s=BM(r.res);return!(i.returnObjects===!1&&s)}extractFromKey(t,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let s=n.ns||this.options.defaultNS||[];const a=i&&t.includes(i),l=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!UQe(t,i,r);if(a&&!l){const c=t.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:t,namespaces:$n(s)?[s]:s};const u=t.split(i);(i!==r||i===r&&this.options.ns.includes(u[0]))&&(s=u.shift()),t=u.join(r)}return{key:t,namespaces:$n(s)?[s]:s}}translate(t,n,i){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),t==null)return"";typeof t=="function"&&(t=Kb(t,{...this.options,...r})),Array.isArray(t)||(t=[String(t)]),t=t.map(N=>typeof N=="function"?Kb(N,{...this.options,...r}):String(N));const s=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:l,namespaces:c}=this.extractFromKey(t[t.length-1],r),u=c[c.length-1];let d=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;d===void 0&&(d=":");const f=r.lng||this.language,h=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((f==null?void 0:f.toLowerCase())==="cimode")return h?s?{res:`${u}${d}${l}`,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(r)}:`${u}${d}${l}`:s?{res:l,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(r)}:l;const m=this.resolve(t,r);let g=m==null?void 0:m.res;const b=(m==null?void 0:m.usedKey)||l,v=(m==null?void 0:m.exactUsedKey)||l,y=["[object Number]","[object Function]","[object RegExp]"],w=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,x=!this.i18nFormat||this.i18nFormat.handleAsObject,O=r.count!==void 0&&!$n(r.count),S=Mj.hasDefaultValue(r),k=O?this.pluralResolver.getSuffix(f,r.count,r):"",C=r.ordinal&&O?this.pluralResolver.getSuffix(f,r.count,{ordinal:!1}):"",E=O&&!r.ordinal&&r.count===0,R=E&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${k}`]||r[`defaultValue${C}`]||r.defaultValue;let A=g;x&&!g&&S&&(A=R);const j=BM(A),T=Object.prototype.toString.apply(A);if(x&&A&&j&&!y.includes(T)&&!($n(w)&&Array.isArray(A))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const N=this.options.returnedObjectHandler?this.options.returnedObjectHandler(b,A,{...r,ns:c}):`key '${l} (${this.language})' returned an object instead of string.`;return s?(m.res=N,m.usedParams=this.getUsedParamsDetails(r),m):N}if(a){const N=Array.isArray(A),_=N?[]:{},D=N?v:b;for(const M in A)if(Object.prototype.hasOwnProperty.call(A,M)){const P=`${D}${a}${M}`;S&&!g?_[M]=this.translate(P,{...r,defaultValue:BM(R)?R[M]:void 0,joinArrays:!1,ns:c}):_[M]=this.translate(P,{...r,joinArrays:!1,ns:c}),_[M]===P&&(_[M]=A[M])}g=_}}else if(x&&$n(w)&&Array.isArray(g))g=g.join(w),g&&(g=this.extendTranslation(g,t,r,i));else{let N=!1,_=!1;!this.isValidLookup(g)&&S&&(N=!0,g=R),this.isValidLookup(g)||(_=!0,g=l);const M=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&_?void 0:g,P=S&&R!==g&&this.options.updateMissing;if(_||N||P){if(this.logger.log(P?"updateKey":"missingKey",f,u,O&&!P?`${l}${this.pluralResolver.getSuffix(f,r.count,r)}`:l,P?R:g),a){const z=this.resolve(l,{...r,keySeparator:!1});z&&z.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let L=[];const B=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&B&&B[0])for(let z=0;z{var H;const q=S&&F!==g?F:M;this.options.missingKeyHandler?this.options.missingKeyHandler(z,u,K,q,P,r):(H=this.backendConnector)!=null&&H.saveMissing&&this.backendConnector.saveMissing(z,u,K,q,P,r),this.emit("missingKey",z,u,K,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&O?L.forEach(z=>{const K=this.pluralResolver.getSuffixes(z,r);E&&r[`defaultValue${this.options.pluralSeparator}zero`]&&!K.includes(`${this.options.pluralSeparator}zero`)&&K.push(`${this.options.pluralSeparator}zero`),K.forEach(F=>{I([z],l+F,r[`defaultValue${F}`]||R)})}):I(L,l,R))}g=this.extendTranslation(g,t,r,m,i),_&&g===l&&this.options.appendNamespaceToMissingKey&&(g=`${u}${d}${l}`),(_||N)&&this.options.parseMissingKeyHandler&&(g=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}${d}${l}`:l,N?g:void 0,r))}return s?(m.res=g,m.usedParams=this.getUsedParamsDetails(r),m):g}extendTranslation(t,n,i,r,s){var c,u;if((c=this.i18nFormat)!=null&&c.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const d=$n(t)&&(((u=i==null?void 0:i.interpolation)==null?void 0:u.skipOnVariables)!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let f;if(d){const m=t.match(this.interpolator.nestingRegexp);f=m&&m.length}let h=i.replace&&!$n(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(h={...this.options.interpolation.defaultVariables,...h}),t=this.interpolator.interpolate(t,h,i.lng||this.language||r.usedLng,i),d){const m=t.match(this.interpolator.nestingRegexp),g=m&&m.length;f(s==null?void 0:s[0])===m[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${m[0]} in key: ${n[0]}`),null):this.translate(...m,n),i)),i.interpolation&&this.interpolator.reset()}const a=i.postProcess||this.options.postProcess,l=$n(a)?[a]:a;return t!=null&&(l!=null&&l.length)&&i.applyPostProcessor!==!1&&(t=Rwe.handle(l,t,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),t}resolve(t,n={}){let i,r,s,a,l;return $n(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(c=>typeof c=="function"?Kb(c,{...this.options,...n}):c)),t.forEach(c=>{if(this.isValidLookup(i))return;const u=this.extractFromKey(c,n),d=u.key;r=d;let f=u.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const h=n.count!==void 0&&!$n(n.count),m=h&&!n.ordinal&&n.count===0,g=n.context!==void 0&&($n(n.context)||typeof n.context=="number")&&n.context!=="",b=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(v=>{var y,w;this.isValidLookup(i)||(l=v,!this.checkedLoadedFor[`${b[0]}-${v}`]&&((y=this.utils)!=null&&y.hasLoadedNamespace)&&!((w=this.utils)!=null&&w.hasLoadedNamespace(l))&&(this.checkedLoadedFor[`${b[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${b.join(", ")}" won't get resolved as namespace "${l}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),b.forEach(x=>{var k;if(this.isValidLookup(i))return;a=x;const O=[d];if((k=this.i18nFormat)!=null&&k.addLookupKeys)this.i18nFormat.addLookupKeys(O,d,x,v,n);else{let C;h&&(C=this.pluralResolver.getSuffix(x,n.count,n));const E=`${this.options.pluralSeparator}zero`,R=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(h&&(n.ordinal&&C.startsWith(R)&&O.push(d+C.replace(R,this.options.pluralSeparator)),O.push(d+C),m&&O.push(d+E)),g){const A=`${d}${this.options.contextSeparator||"_"}${n.context}`;O.push(A),h&&(n.ordinal&&C.startsWith(R)&&O.push(A+C.replace(R,this.options.pluralSeparator)),O.push(A+C),m&&O.push(A+E))}}let S;for(;S=O.pop();)this.isValidLookup(i)||(s=S,i=this.getResource(x,v,S,n))}))})}),{res:i,usedKey:r,exactUsedKey:s,usedLng:a,usedNS:l}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,i,r={}){var s;return(s=this.i18nFormat)!=null&&s.getResource?this.i18nFormat.getResource(t,n,i,r):this.resourceStore.getResource(t,n,i,r)}getUsedParamsDetails(t={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=t.replace&&!$n(t.replace);let r=i?t.replace:t;if(i&&typeof t.count<"u"&&(r={...r,count:t.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const s of n)delete r[s]}return r}static hasDefaultValue(t){const n="defaultValue";for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&i.startsWith(n)&&t[i]!==void 0)return!0;return!1}}class JW{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=xf.create("languageUtils"),this.resolveHierarchyCache={}}clearCache(){this.resolveHierarchyCache={}}getScriptPartFromCode(t){if(t=kS(t),!t||!t.includes("-"))return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=kS(t),!t||!t.includes("-"))return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if($n(t)&&t.includes("-")){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(t)}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(i=>{if(n)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&t.forEach(i=>{if(n)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return n=r;const s=this.getLanguagePartFromCode(i);if(this.isSupportedCode(s))return n=s;n=this.options.supportedLngs.find(a=>a===s?!0:!a.includes("-")&&!s.includes("-")?!1:!!(a.includes("-")&&!s.includes("-")&&a.slice(0,a.indexOf("-"))===s||a.startsWith(s)&&s.length>1))}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),$n(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let i=t[n];return i||(i=t[this.getScriptPartFromCode(n)]),i||(i=t[this.formatLanguageCode(n)]),i||(i=t[this.getLanguagePartFromCode(n)]),i||(i=t.default),i||[]}toResolveHierarchy(t,n){const i=this.options.fallbackLng,r=Array.isArray(i)?i.join("|"):i;r!==this._cachedFallbackLng&&(this.resolveHierarchyCache={},this._cachedFallbackLng=r);const s=n===void 0||n===!1||$n(n),a=n===void 0&&typeof this.options.fallbackLng=="function",l=$n(t)&&s&&!a;let c=null;if(l){let h;n===void 0?h="undefined":n===!1?h="boolean:false":h=`string:${n}`,c=`${t.length}:${t}|${h}`}if(c!==null){const h=this.resolveHierarchyCache[c];if(h!==void 0)return h.slice()}const u=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],t),d=[],f=h=>{h&&(this.isSupportedCode(h)?d.push(h):this.logger.warn(`rejecting language code not found in supportedLngs: ${h}`))};return $n(t)&&(t.includes("-")||t.includes("_"))?(this.options.load!=="languageOnly"&&f(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&f(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&f(this.getLanguagePartFromCode(t))):$n(t)&&f(this.formatLanguageCode(t)),u.forEach(h=>{d.includes(h)||f(this.formatLanguageCode(h))}),c!==null?(this.resolveHierarchyCache[c]=d,d.slice()):d}}const eK={zero:0,one:1,two:2,few:3,many:4,other:5},tK={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class VQe{constructor(t,n={}){this.languageUtils=t,this.options=n,this.logger=xf.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,n={}){const i=kS(t==="dev"?"en":t),r=n.ordinal?"ordinal":"cardinal",s=JSON.stringify({cleanedCode:i,type:r});if(s in this.pluralRulesCache)return this.pluralRulesCache[s];let a;try{a=new Intl.PluralRules(i,{type:r})}catch{if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),tK;if(!t.match(/-|_/))return tK;const c=this.languageUtils.getLanguagePartFromCode(t);a=this.getRule(c,n)}return this.pluralRulesCache[s]=a,a}needsPlural(t,n={}){let i=this.getRule(t,n);return i||(i=this.getRule("dev",n)),(i==null?void 0:i.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n,i={}){return this.getSuffixes(t,i).map(r=>`${n}${r}`)}getSuffixes(t,n={}){let i=this.getRule(t,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((r,s)=>eK[r]-eK[s]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(t,n,i={}){const r=this.getRule(t,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",n,i))}}const nK=(e,t,n,i=".",r=!0)=>{let s=DQe(e,t,n);return!s&&r&&$n(n)&&(s=x6(e,n,i),s===void 0&&(s=x6(t,n,i))),s},iK=e=>e.replace(/\$/g,"$$$$");class rK{constructor(t={}){var n;this.logger=xf.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(i=>i),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:r,prefix:s,prefixEscaped:a,suffix:l,suffixEscaped:c,formatSeparator:u,unescapeSuffix:d,unescapePrefix:f,nestingPrefix:h,nestingPrefixEscaped:m,nestingSuffix:g,nestingSuffixEscaped:b,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:w}=t.interpolation;this.escape=n!==void 0?n:LQe,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=s?sh(s):a||"{{",this.suffix=l?sh(l):c||"}}",this.formatSeparator=u||",",this.unescapePrefix=d?"":f?sh(f):"-",this.unescapeSuffix=this.unescapePrefix?"":d?sh(d):"",this.nestingPrefix=h?sh(h):m||sh("$t("),this.nestingSuffix=g?sh(g):b||sh(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=w!==void 0?w:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,i)=>(n==null?void 0:n.source)===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,n,i,r){var m;let s,a,l;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=g=>{if(!g.includes(this.formatSeparator)){const w=nK(n,c,g,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(w,void 0,i,{...r,...n,interpolationkey:g}):w}const b=g.split(this.formatSeparator),v=b.shift().trim(),y=b.join(this.formatSeparator).trim();return this.format(nK(n,c,v,this.options.keySeparator,this.options.ignoreJSONStructure),y,i,{...r,...n,interpolationkey:v})};this.resetRegExp(),!this.escapeValue&&typeof t=="string"&&/\$t\([^)]*\{[^}]*\{\{/.test(t)&&this.logger.warn("nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.");const d=(r==null?void 0:r.missingInterpolationHandler)||this.options.missingInterpolationHandler,f=((m=r==null?void 0:r.interpolation)==null?void 0:m.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:g=>g},{regex:this.regexp,safeValue:g=>this.escapeValue?this.escape(g):g}].forEach(g=>{for(l=0;s=g.regex.exec(t);){const b=s[1].trim();if(a=u(b),a===void 0)if(typeof d=="function"){const y=d(t,s,r);a=$n(y)?y:""}else if(r&&Object.prototype.hasOwnProperty.call(r,b))a="";else if(f){a=s[0];continue}else this.logger.warn(`missed to pass in variable ${b} for interpolating ${t}`),a="";else!$n(a)&&!this.useRawValueToEscape&&(a=FM(a));const v=g.safeValue(a);if(t=t.replace(s[0],iK(v)),f?(g.regex.lastIndex+=v.length,g.regex.lastIndex-=s[0].length):g.regex.lastIndex=0,l++,l>=this.maxReplaces)break}}),t}nest(t,n,i={}){let r,s,a;const l=(c,u)=>{const d=this.nestingOptionsSeparator;if(!c.includes(d))return c;const f=c.split(new RegExp(`${sh(d)}[ ]*{`));let h=`{${f[1]}`;c=f[0],h=this.interpolate(h,a);const m=h.match(/'/g),g=h.match(/"/g);(((m==null?void 0:m.length)??0)%2===0&&!g||((g==null?void 0:g.length)??0)%2!==0)&&(h=h.replace(/'/g,'"'));try{a=JSON.parse(h),u&&(a={...u,...a})}catch(b){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,b),`${c}${d}${h}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,c};for(;r=this.nestingRegexp.exec(t);){let c=[];a={...i},a=a.replace&&!$n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/s.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(u!==-1&&(c=r[1].slice(u).split(this.formatSeparator).map(d=>d.trim()).filter(Boolean),r[1]=r[1].slice(0,u)),s=n(l.call(this,r[1].trim(),a),a),s&&r[0]===t&&!$n(s))return s;$n(s)||(s=FM(s)),s||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${t}`),s=""),c.length&&(s=c.reduce((d,f)=>this.format(d,f,i.lng,{...i,interpolationkey:r[1].trim()}),s.trim())),t=t.replace(r[0],iK(FM(s))),this.regexp.lastIndex=0}return t}}const HQe=e=>{let t=e.toLowerCase().trim();const n={};if(e.includes("(")){const i=e.split("(");t=i[0].toLowerCase().trim();const r=i[1].slice(0,-1);t==="currency"&&!r.includes(":")?n.currency||(n.currency=r.trim()):t==="relativetime"&&!r.includes(":")?n.range||(n.range=r.trim()):r.split(";").forEach(a=>{if(a){const[l,...c]=a.split(":"),u=c.join(":").trim().replace(/^'+|'+$/g,""),d=l.trim();n[d]||(n[d]=u),u==="false"&&(n[d]=!1),u==="true"&&(n[d]=!0),isNaN(u)||(n[d]=parseInt(u,10))}})}return{formatName:t,formatOptions:n}},sK=e=>{const t={};return(n,i,r)=>{let s=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(s={...s,[r.interpolationkey]:void 0});const a=i+JSON.stringify(s);let l=t[a];return l||(l=e(kS(i),r),t[a]=l),l(n)}},qQe=e=>(t,n,i)=>e(kS(n),i)(t);class WQe{constructor(t={}){this.logger=xf.create("formatter"),this.options=t,this.init(t)}init(t,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?sK:qQe;this.formats={number:i((r,s)=>{const a=new Intl.NumberFormat(r,{...s});return l=>a.format(l)}),currency:i((r,s)=>{const a=new Intl.NumberFormat(r,{...s,style:"currency"});return l=>a.format(l)}),datetime:i((r,s)=>{const a=new Intl.DateTimeFormat(r,{...s});return l=>a.format(l)}),relativetime:i((r,s)=>{const a=new Intl.RelativeTimeFormat(r,{...s});return l=>a.format(l,s.range||"day")}),list:i((r,s)=>{const a=new Intl.ListFormat(r,{...s});return l=>a.format(l)})}}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=sK(n)}format(t,n,i,r={}){if(!n||t==null)return t;const s=n.split(this.formatSeparator),a=[];for(let c=0;c-1&&!u.includes(")")&&c+1{var h;const{formatName:d,formatOptions:f}=HQe(u);if(this.formats[d]){let m=c;try{const g=((h=r==null?void 0:r.formatParams)==null?void 0:h[r.interpolationkey])||{},b=g.locale||g.lng||r.locale||r.lng||i;m=this.formats[d](c,b,{...f,...r,...g})}catch(g){this.logger.warn(g)}return m}else this.logger.warn(`there was no format function for ${d}`);return c},t)}}const KQe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class GQe extends hI{constructor(t,n,i,r={}){var s,a;super(),this.backend=t,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=xf.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],(a=(s=this.backend)==null?void 0:s.init)==null||a.call(s,i,r.backend,r)}queueLoad(t,n,i,r){const s={},a={},l={},c={};return t.forEach(u=>{let d=!0;n.forEach(f=>{const h=`${u}|${f}`;!i.reload&&this.store.hasResourceBundle(u,f)?this.state[h]=2:this.state[h]<0||(this.state[h]===1?a[h]===void 0&&(a[h]=!0):(this.state[h]=1,d=!1,a[h]===void 0&&(a[h]=!0),s[h]===void 0&&(s[h]=!0),c[f]===void 0&&(c[f]=!0)))}),d||(l[u]=!0)}),(Object.keys(s).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(s),pending:Object.keys(a),toLoadLanguages:Object.keys(l),toLoadNamespaces:Object.keys(c)}}loaded(t,n,i){const r=t.split("|"),s=r[0],a=r[1];n&&this.emit("failedLoading",s,a,n),!n&&i&&this.store.addResourceBundle(s,a,i,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&i&&(this.state[t]=0);const l={};this.queue.forEach(c=>{PQe(c.loaded,[s],a),KQe(c,t),n&&c.errors.push(n),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(u=>{l[u]||(l[u]={});const d=c.loaded[u];d.length&&d.forEach(f=>{l[u][f]===void 0&&(l[u][f]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",l),this.queue=this.queue.filter(c=>!c.done)}read(t,n,i,r=0,s=this.retryTimeout,a){if(!t.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:i,tried:r,wait:s,callback:a});return}this.readingCalls++;const l=(u,d)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(u&&d&&r{this.read(t,n,i,r+1,s*2,a)},s);return}a(u,d)},c=this.backend[i].bind(this.backend);if(c.length===2){try{const u=c(t,n);u&&typeof u.then=="function"?u.then(d=>l(null,d)).catch(l):l(null,u)}catch(u){l(u)}return}return c(t,n,l)}prepareLoading(t,n,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();$n(t)&&(t=this.languageUtils.toResolveHierarchy(t)),$n(n)&&(n=[n]);const s=this.queueLoad(t,n,i,r);if(!s.toLoad.length)return s.pending.length||r(),null;s.toLoad.forEach(a=>{this.loadOne(a)})}load(t,n,i){this.prepareLoading(t,n,{},i)}reload(t,n,i){this.prepareLoading(t,n,{reload:!0},i)}loadOne(t,n=""){const i=t.split("|"),r=i[0],s=i[1];this.read(r,s,"read",void 0,void 0,(a,l)=>{a&&this.logger.warn(`${n}loading namespace ${s} for language ${r} failed`,a),!a&&l&&this.logger.log(`${n}loaded namespace ${s} for language ${r}`,l),this.loaded(t,a,l)})}saveMissing(t,n,i,r,s,a={},l=()=>{}){var c,u,d,f,h;if((u=(c=this.services)==null?void 0:c.utils)!=null&&u.hasLoadedNamespace&&!((f=(d=this.services)==null?void 0:d.utils)!=null&&f.hasLoadedNamespace(n))){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if((h=this.backend)!=null&&h.create){const m={...a,isUpdate:s},g=this.backend.create.bind(this.backend);if(g.length<6)try{let b;g.length===5?b=g(t,n,i,r,m):b=g(t,n,i,r),b&&typeof b.then=="function"?b.then(v=>l(null,v)).catch(l):l(null,b)}catch(b){l(b)}else g(t,n,i,r,l,m)}!t||!t[0]||this.store.addResource(t[0],n,i,r)}}}const UM=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),$n(e[1])&&(t.defaultValue=e[1]),$n(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(i=>{t[i]=n[i]})}return t},interpolation:{escapeValue:!0,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),oK=e=>($n(e.ns)&&(e.ns=[e.ns]),$n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),$n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes("cimode")&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),n2=()=>{},XQe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class Ok extends hI{constructor(t={},n){if(super(),this.options=oK(t),this.services={},this.logger=xf,this.modules={external:[]},XQe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(t={},n){this.isInitializing=!0,typeof t=="function"&&(n=t,t={}),t.defaultNS==null&&t.ns&&($n(t.ns)?t.defaultNS=t.ns:t.ns.includes("translation")||(t.defaultNS=t.ns[0]));const i=UM();this.options={...i,...this.options,...oK(t)},this.options.interpolation={...i.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=i.overloadTranslationOptionHandler);const r=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?xf.init(r(this.modules.logger),this.options):xf.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:u=WQe;const d=new JW(this.options);this.store=new ZW(this.options.resources,this.options);const f=this.services;f.logger=xf,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new VQe(d,{prepend:this.options.pluralSeparator}),u&&(f.formatter=r(u),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new rK(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new GQe(r(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(h,...m)=>{this.emit(h,...m)}),this.modules.languageDetector&&(f.languageDetector=r(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=r(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new Mj(this.services,this.options),this.translator.on("*",(h,...m)=>{this.emit(h,...m)}),this.modules.external.forEach(h=>{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,n||(n=n2),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=(...d)=>this.store[u](...d)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=(...d)=>(this.store[u](...d),this)});const l=K1(),c=()=>{const u=(d,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(f),n(d,f)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initAsync?c():setTimeout(c,0),l}loadResources(t,n=n2){var s,a;let i=n;const r=$n(t)?t:this.language;if(typeof t=="function"&&(i=t),!this.options.resources||this.options.partialBundledLanguages){if((r==null?void 0:r.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const l=[],c=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(f=>{f!=="cimode"&&(l.includes(f)||l.push(f))})};r?c(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(d=>c(d)),(a=(s=this.options.preload)==null?void 0:s.forEach)==null||a.call(s,u=>c(u)),this.services.backendConnector.load(l,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(u)})}else i(null)}reloadResources(t,n,i){const r=K1();return typeof t=="function"&&(i=t,t=void 0),typeof n=="function"&&(i=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),i||(i=n2),this.services.backendConnector.reload(t,n,s=>{r.resolve(),i(s)}),r}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&Rwe.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!["cimode","dev"].includes(t)){for(let n=0;n{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},s=(l,c)=>{c?this.isLanguageChangingTo===t&&(r(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve((...u)=>this.t(...u)),n&&n(l,(...u)=>this.t(...u))},a=l=>{var d,f;!t&&!l&&this.services.languageDetector&&(l=[]);const c=$n(l)?l:l&&l[0],u=this.store.hasLanguageSomeTranslations(c)?c:this.services.languageUtils.getBestMatchFromCodes($n(l)?[l]:l);u&&(this.language||r(u),this.translator.language||this.translator.changeLanguage(u),(f=(d=this.services.languageDetector)==null?void 0:d.cacheUserLanguage)==null||f.call(d,u)),this.loadResources(u,h=>{s(h,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t),i}getFixedT(t,n,i,r){const s=r==null?void 0:r.scopeNs,a=(l,c,...u)=>{let d;typeof c!="object"?d=this.options.overloadTranslationOptionHandler([l,c].concat(u)):d={...c},d.lng=d.lng||a.lng,d.lngs=d.lngs||a.lngs;const f=d.ns!==void 0&&d.ns!==null;d.ns=d.ns||a.ns,d.keyPrefix!==""&&(d.keyPrefix=d.keyPrefix||i||a.keyPrefix);const h={...this.options,...d};Array.isArray(s)&&!f&&(h.ns=s),typeof d.keyPrefix=="function"&&(d.keyPrefix=Kb(d.keyPrefix,h));const m=this.options.keySeparator||".";let g;return d.keyPrefix&&Array.isArray(l)?g=l.map(b=>(typeof b=="function"&&(b=Kb(b,h)),`${d.keyPrefix}${m}${b}`)):(typeof l=="function"&&(l=Kb(l,h)),g=d.keyPrefix?`${d.keyPrefix}${m}${l}`:l),this.t(g,d)};return $n(t)?a.lng=t:a.lngs=t,a.ns=n,a.keyPrefix=i,a}t(...t){var n;return(n=this.translator)==null?void 0:n.translate(...t)}exists(...t){var n;return(n=this.translator)==null?void 0:n.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,s=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const a=(l,c)=>{const u=this.services.backendConnector.state[`${l}|${c}`];return u===-1||u===0||u===2};if(n.precheck){const l=n.precheck(this,a);if(l!==void 0)return l}return!!(this.hasResourceBundle(i,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(i,t)&&(!r||a(s,t)))}loadNamespaces(t,n){const i=K1();return this.options.ns?($n(t)&&(t=[t]),t.forEach(r=>{this.options.ns.includes(r)||this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),n&&n(r)}),i):(n&&n(),Promise.resolve())}loadLanguages(t,n){const i=K1();$n(t)&&(t=[t]);const r=this.options.preload||[],s=t.filter(a=>!r.includes(a)&&this.services.languageUtils.isSupportedCode(a));return s.length?(this.options.preload=r.concat(s),this.loadResources(a=>{i.resolve(),n&&n(a)}),i):(n&&n(),Promise.resolve())}dir(t){var r,s;if(t||(t=this.resolvedLanguage||(((r=this.languages)==null?void 0:r.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{const a=new Intl.Locale(t);if(a&&a.getTextInfo){const l=a.getTextInfo();if(l&&l.direction)return l.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=((s=this.services)==null?void 0:s.languageUtils)||new JW(UM());return t.toLowerCase().indexOf("-latn")>1?"ltr":n.includes(i.getLanguagePartFromCode(t))||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},n){const i=new Ok(t,n);return i.createInstance=Ok.createInstance,i}cloneInstance(t={},n=n2){const i=t.forkResourceStore;i&&delete t.forkResourceStore;const r={...this.options,...t,isClone:!0},s=new Ok(r);if((t.debug!==void 0||t.prefix!==void 0)&&(s.logger=s.logger.clone(t)),["store","services","language"].forEach(l=>{s[l]=this[l]}),s.services={...this.services},s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},i){const l=Object.keys(this.store.data).reduce((c,u)=>(c[u]={...this.store.data[u]},c[u]=Object.keys(c[u]).reduce((d,f)=>(d[f]={...c[u][f]},d),c[u]),c),{});s.store=new ZW(l,r),s.services.resourceStore=s.store}if(t.interpolation){const c={...UM().interpolation,...this.options.interpolation,...t.interpolation},u={...r,interpolation:c};s.services.interpolator=new rK(u)}return s.translator=new Mj(s.services,r),s.translator.on("*",(l,...c)=>{s.emit(l,...c)}),s.init(r,n),s.translator.options=r,s.translator.backendConnector.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Dl=Ok.createInstance();Dl.createInstance;Dl.dir;Dl.init;Dl.loadResources;Dl.reloadResources;Dl.use;Dl.changeLanguage;Dl.getFixedT;Dl.t;Dl.exists;Dl.setDefaultNamespace;Dl.hasLoadedNamespace;Dl.loadNamespaces;Dl.loadLanguages;var Pwe={exports:{}},di={};/**
+安装命令:{{command}}`,title:"接力到云端继续执行",description:"按顺序复制两段提示词,Codex 会通过插件将您的本地任务接力到云端",closeAria:"关闭本地迁移引导",installTitle:"安装插件",installDescription:"首次使用时,请选择一种安装方式。",copied:"已复制",copyInstallPrompt:"复制安装提示词",copyInstallCommand:"复制安装命令",installMethodAria:"插件安装方式",conversationInstall:"与 Codex 对话安装",terminalInstall:"从终端安装",taskTitle:"任务接力",taskDescription:"插件安装完成后复制,Codex 会迁移当前项目并继续执行任务。",copyHandoffPrompt:"复制接力提示词",generatingPairing:"正在生成新的配对码",pairingExpired:"配对码已过期",pairingRemaining:"配对码有效期剩余 {{countdown}}",refreshing:"刷新中",refreshPairing:"刷新配对码",pairingLoading:"正在生成配对码",pairingUnavailable:"配对码尚未生成。",statusAria:"端云接力状态",statusTitle:"接力状态",requestReceivedNamed:"已收到“{{name}}”的端云接力请求",requestReceivedCurrent:"已收到当前项目的端云接力请求",requestHelp:"复制接力提示词后,Codex 的请求会显示在这里。",entering:"正在进入",enterCodex:"进入 Codex",clipboardUnsupported:"当前浏览器不支持写入剪贴板。",steps:{request:"等待端侧请求",session:"创建云端 Session",restore:"恢复项目",continue:"发送续跑任务"},status:{issued:"等待请求",creating:"正在创建 Session",sessionCreated:"正在迁移项目",continuing:"正在启动云端任务",running:"云端执行中",completed:"接力完成",failed:"接力失败"}},yve={model:{description:"显示或切换当前对话模型",keywords:"模型 switch"},models:{description:"列出 app-server 可用模型",keywords:"模型列表 list"},skill:{description:"浏览并调用当前工作区可用的 Skill",keywords:"技能 workflow"},skills:{description:"浏览并调用当前工作区可用的 Skills",keywords:"技能列表 workflow list"},new:{description:"开始一个新对话",keywords:"新建 对话"},resume:{description:"打开历史会话或恢复指定 Thread",keywords:"历史 恢复 session"},fork:{description:"从当前上下文分叉一个新对话",keywords:"分叉 branch"},compact:{description:"压缩当前对话上下文",keywords:"压缩 上下文"},archive:{description:"归档当前对话并新建对话",keywords:"归档 关闭"},status:{description:"显示当前连接、Thread、模型与 Token 状态",keywords:"状态 连接 token"},clear:{description:"清空当前视图并开始新对话",keywords:"清空 重置"},help:{description:"显示 Sandbox 支持的快捷命令",keywords:"帮助 命令"},currentModel:"当前模型",availableModel:"可用模型",workspace:"工作空间",notSet:"未设置",modelLabel:"模型",statusLabel:"状态",running:"运行中",idle:"空闲",totalTokens:"累计 Token",contextWindow:"上下文窗口",imageFallback:"图片",unknown:"未知快捷命令:{{command}}。输入 /help 查看可用命令。",automaticSkills:"智能开发模式会自动使用开发能力,无需手动选择 Skill。",activity:{new:"已新建 Codex 对话",resumed:"已恢复 Codex 对话",deleted:"已删除 Codex 历史会话",modelChanged:"已切换 Codex 模型",availableModels:"Codex 可用模型",noModels:"当前没有可用模型",forked:"已分叉 Codex 对话",compacting:"已开始压缩当前 Codex 对话",archived:"已归档 Codex 对话",status:"Codex 当前状态",help:"Sandbox 支持的 Codex 快捷命令"}},vve={label:"智能构建任务",queued:"构建任务已排队",running:"构建任务正在后台运行",recovering:"正在恢复构建任务",waiting_user:"构建任务需要继续处理",stopping:"正在停止构建任务",succeeded:"构建任务已完成",cancelled:"构建任务已停止",failed:"构建任务未完成",open:"返回任务",hide:"隐藏任务通知",reconnecting:"正在重新连接任务服务,已有任务继续保留。"},xve={common:ove,tool:ave,threads:lve,permissions:cve,workspace:uve,approval:dve,composer:fve,launch:hve,session:pve,agentDetails:mve,agentWorkspace:gve,handoff:bve,commands:yve,taskNotice:vve},hQe=Object.freeze(Object.defineProperty({__proto__:null,agentDetails:mve,agentWorkspace:gve,approval:dve,commands:yve,common:ove,composer:fve,default:xve,handoff:bve,launch:hve,permissions:cve,session:pve,taskNotice:vve,threads:lve,tool:ave,workspace:uve},Symbol.toStringTag,{value:"Module"})),wve={retry:"重试",signInToContinue:"登录以继续使用",signInWith:"使用 {{provider}} 登录",enterUsername:"输入一个用户名即可开始",usernamePlaceholder:"用户名(字母 + 数字,最多 16 位)",enter:"进入",usernameInvalid:"只能包含大小写字母和数字,最多 16 位。",identityProvider:{volcengine:"火山引擎 Identity",byteplus:"BytePlus Identity"},powered:{volcengine:"火山引擎 AgentKit 提供企业级 Agent 解决方案",byteplus:"BytePlus AgentKit 提供企业级 Agent 解决方案"},legalPrefix:"继续即表示你已阅读并同意 AgentKit",terms:"产品和服务条款",copyright:"© {{year}} VeADK。保留所有权利。"},Ove={title:"登录状态已过期",description:"当前编辑内容会保留。重新登录后,刚才的操作将自动继续。",waiting:"等待登录完成…",signInAgain:"重新登录"},kve={breadcrumbs:"面包屑",selectAgent:"选择 Agent",switchAgent:"切换智能体"},Sve={cancel:"取消",close:"关闭确认框"},pQe={login:wve,authExpired:Ove,navbar:kve,confirm:Sve},mQe=Object.freeze(Object.defineProperty({__proto__:null,authExpired:Ove,confirm:Sve,default:pQe,login:wve,navbar:kve},Symbol.toStringTag,{value:"Module"})),Eve={defaultUser:"用户",shortcuts:"快捷入口",tryCli:"体验 AgentKit CLI",developerResources:"开发者资源",systemInfo:"系统信息",language:"语言",issueFeedback:"问题反馈",logout:"退出登录",roles:{admin:"管理员",developer:"开发者",user:"普通用户",super_admin:"超级管理员"}},Cve={home:"返回首页",expand:"展开侧边栏",collapse:"收起侧边栏",label:"主导航",newChat:"新会话",agents:"智能体",workspaces:"工作区",library:"资源库",cronjobs:"定时任务",automations:"自动化",users:"用户管理",administration:"管控",reviewCenter:"审核中心"},Tve={title:"历史会话",newConversation:"新会话",create:"新建会话",loading:"正在加载历史会话…",empty:"暂无会话",current:"当前",manage:"管理历史会话:{{title}}",more:"更多",delete:"删除",loadingMore:"加载中…",loadMore:"加载更多",evaluatingTitle:"正在自动评测",evaluating:"评测中",generating:"正在生成"},gQe={account:Eve,navigation:Cve,history:Tve},bQe=Object.freeze(Object.defineProperty({__proto__:null,account:Eve,default:gQe,history:Tve,navigation:Cve},Symbol.toStringTag,{value:"Module"})),Ave={placeholder:"请选择",collapseOptions:"收起模型选项",expandOptions:"展开模型选项",noOptions:"暂无可用选项",noMatches:"没有匹配项,可直接使用当前模型 ID"},_ve={unsupportedActivity:"不支持的 Skill 对话活动",ariaLabel:"Skill 生成对话"},jve={code:"错误码:{{code}}",type:"错误类型:{{type}}",representation:"异常表示:{{value}}",rawResponse:`服务端原始响应:
+{{value}}`,original:"原始错误:{{message}}",details:"详细信息"},Nve={ariaLabel:"Skill 文件树",viewSource:"查看源码",viewPreview:"查看预览",download:"下载",binaryFile:"二进制文件",bytes:"{{value}} 字节",binaryDescription:"当前接口仅返回文件元数据,可单独下载原文件。",metadata:"Skill 元数据",noFiles:"暂无文件"},Rve={close:"关闭",name:"名称",region:"地域",optionalDescription:"描述(可选)",cancel:"取消",create:"创建",creating:"创建中…",save:"保存",saving:"保存中…",upload:"上传",uploading:"上传中…",createSpaceTitle:"新建 Skill 空间",editSpaceTitle:"编辑 Skill 空间",uploadTitle:"上传到 {{name}}",createSpaceFailed:"创建 Skill 空间失败",updateSpaceFailed:"更新 Skill 空间失败",archiveValidationFailed:"Skill ZIP 格式校验失败",uploadFailed:"上传 Skill 失败",dropzone:"拖拽 Skill ZIP 到这里",chooseLocalFile:"或点击选择本地文件",archiveHelp:"ZIP 根目录需要包含 SKILL.md,也可以只包含一层包装目录。选择后仅检查格式,不会自动上传。",validating:"正在检查文件格式…",validationPassed:"格式检查通过:{{name}},共 {{count}} 个文件"},Ive={styles:{concise:"简洁实用",strict:"严谨稳健",tutorial:"教程友好",automation:"自动化优先",custom:"自定义",customFallback:"自定义风格"},stages:{preparing:"正在准备 Dev Sandbox",ready:"Skill 已生成并通过格式校验",failed:"生成失败",cancelled:"已停止",validating:"正在校验 Skill 格式",packaging:"正在整理文件",generating:"正在生成 Skill",repairingAgain:"正在再次修复",autoRepairing:"正在自动修复({{attempt}}/{{max}})"},validation:{fallback:"Skill 格式校验未通过",repairInstruction:"只修复下面列出的 Skill 格式错误,不要改变原有用途和内容范围。",recheckInstruction:"修复后重新检查目录结构、SKILL.md frontmatter 和所有文本文件。",nameTooLong:"Skill 名称不能超过 64 个字符",invalidName:"Skill 名称只能包含小写字母、数字和连字符",modelTooLong:"模型 ID 不能超过 128 个字符",invalidModel:"模型 ID 只能包含字母、数字、点、下划线、连字符、斜杠和冒号"},errors:{loadCapability:"读取 Dev Sandbox 配置失败",autoRepair:"自动修复格式错误失败",pollCandidate:"读取候选方案状态失败,正在重试",createCandidate:"创建候选方案失败",refine:"继续调整失败",repairAgain:"再次修复格式错误失败",selectSpace:"请选择上传的 Skill Space",unsupportedRegion:"当前 Skill 地域不受支持",upload:"上传 Skill 失败",download:"下载失败"},sessionMax:"Session 最长保留 1 小时",remaining:"剩余 {{minutes}}:{{seconds}}",unnamedSpace:"未命名 Skill Space",leaveConfirmation:"离开后将停止并释放正在运行的 Dev Sandbox,确定离开吗?",createTitle:"创建技能",optimizeTitle:"优化 {{name}}",skillFallback:"技能",back:"返回技能空间",home:"主页技能生成",basicInfo:"基本信息",goal:"目标",createIntentPlaceholder:"描述希望这个 Skill 完成什么任务",optimizeIntentPlaceholder:"描述希望如何优化当前 Skill",skillName:"Skill 名称",autoNamePlaceholder:"留空时自动生成",nameHelp:"仅支持小写字母、数字和连字符;留空时自动生成。",createPlans:"生成方案",optimizePlans:"优化方案",createPlansDescription:"按不同方案并行生成多个技能,您可以选择最佳结果",optimizePlansDescription:"按不同方案并行优化当前技能,您可以选择最佳结果",plan:"方案 {{count}}",remove:"移除",model:"模型",modelPlaceholder:"选择或输入模型 ID",style:"风格",customStyle:"自定义风格",customStylePlaceholder:"描述表达方式、严谨程度或输出偏好",addConfiguration:"添加配置",notConfigured:"管理员未配置",generate:"生成",candidates:"候选方案",progress:"进度",retryCandidate:"重试此方案",formatValidationFailed:"格式校验未通过",repairAgain:"再次修复",files:"文件",downloadZip:"下载 ZIP",loadingFiles:"正在读取文件…",filesPending:"生成过程中会在这里显示完整文件树",uploadToSpace:"上传到 Skill Space",loadingSpaces:"正在加载 Skill Space",selectSpace:"选择 Skill Space",continuePlaceholder:"继续调整这个候选方案",continue:"继续调整",uploading:"上传中…",overwrite:"覆盖原 Skill",uploadToSelectedSpace:"上传到 Skill Space",uploadToCurrentSpace:"上传到当前空间",allCandidatesFailed:"所有方案均创建失败,可分别重试。"},Pve={invalidFormat:"{{label}}格式错误。",recoveryStatus:"Skill 恢复点状态",errorResponse:"错误响应",errorDetails:"错误详情",missingContentType:"Content-Type 缺失",gatewayError:"{{fallback}}(HTTP {{status}},Content-Type: {{contentType}})。请检查代理或网关配置。",nonJson:"{{fallback}}:服务端返回非 JSON 响应(HTTP {{status}},Content-Type: {{contentType}}),请检查代理或网关配置。",activity:"Skill 会话活动",invalidActivity:"Skill 会话活动格式错误。",invalidToolActivity:"Skill 工具活动格式错误。",invalidTextActivity:"Skill 文本活动格式错误。",publication:"Skill 发布结果",task:"Skill 会话",file:"Skill 文件",unknownTaskState:"Skill 会话状态无法识别。",capability:"Skill 工作台能力",loadCapability:"读取 Skill 工作台能力失败",prepareTask:"准备 Skill 会话失败",taskReference:"Skill 会话引用",startOptimization:"开始优化 Skill 失败",startTask:"开始 Skill 会话失败",taskSummary:"Skill 会话摘要",taskList:"Skill 会话列表",loadTaskList:"读取 Skill 会话列表失败",invalidTaskList:"Skill 会话列表格式错误。",loadTask:"读取 Skill 会话失败",artifact:"Skill 产物",artifactFile:"Skill 产物文件",loadArtifact:"读取 Skill 产物失败",refine:"继续调整 Skill 失败",stop:"停止当前 Skill 任务失败",publish:"发布 Skill 失败",nonNdjson:"发布 Skill 失败:服务端返回了非 NDJSON 响应。",missingStream:"发布 Skill 失败:服务端没有返回进度流。",publishProgress:"发布进度",invalidPublishProgress:"发布进度格式错误。",publishError:"发布错误",unknownPublishEvent:"未知的发布进度事件。",publishResult:"发布结果",streamEnded:"发布进度流提前结束,无法确认发布结果。请刷新技能中心确认状态。",deleteTask:"删除 Skill 会话失败",download:"下载 Skill 失败"},Dve={configSelect:Ave,conversation:_ve,errorDetails:jve,fileTree:Nve,management:Rve,generation:Ive,api:Pve},yQe=Object.freeze(Object.defineProperty({__proto__:null,api:Pve,configSelect:Ave,conversation:_ve,default:Dve,errorDetails:jve,fileTree:Nve,generation:Ive,management:Rve},Symbol.toStringTag,{value:"Module"})),Mve={back:"返回上一页",reload:"重新加载",notConfigured:"未配置",name:"名称",description:"描述",delete:"删除",save:"保存",saving:"保存中",add:"添加",manage:"管理",environment:"环境",noDescription:"暂无描述",refresh:"刷新",close:"关闭",retry:"重试",loading:"加载中…",previousPage:"上一页",nextPage:"下一页",edit:"编辑",all:"全部",search:"搜索",cancel:"取消",view:"查看",viewDetails:"查看详情",deleting:"删除中…",create:"创建",creating:"创建中",adding:"添加中",generating:"生成中",uploading:"上传中",preview:"预览",loadFailed:"加载失败",select:"选择",collapse:"收起",expand:"展开",none:"无"},Lve={ariaLabel:"AgentKit 快速入口",closeAriaLabel:"关闭 AgentKit 欢迎卡片",title:"欢迎使用 AgentKit",description:"通过 AgentKit 平台快速构建与托管您的企业级智能体",docsAriaLabel:"打开 AgentKit 文档,在新窗口打开",docs:"文档",consoleAriaLabel:"打开 AgentKit 控制台,在新窗口打开",console:"控制台"},$ve={checkUpdates:"检查更新",checkingVersions:"正在检查版本…",versionCheckError:"查询沙箱版本失败,请检查凭据、区域及接口权限后重试",sandboxUpdateError:"Sandbox 更新失败,请刷新检查实际状态后重试",modelEnvRepairUnavailable:"无法补齐模型环境变量,请检查 CODEX_API_KEY 和 CODEX_BASE_URL",updateSandbox:"更新{{variant}}{{name}}",updatingSandbox:"更新中",title:"系统信息",description:"查看当前 Studio 版本及关联的基础资源",general:"通用",currentVersion:"当前版本",storage:"存储",loadingStorage:"正在加载存储信息",tosAddress:"TOS 地址",openTosConsole:"在云控制台中打开 TOS 存储桶",environmentBuild:"环境构建",loadingEnvironmentResources:"正在加载环境构建资源",environmentResourcesError:"环境构建资源加载失败,请检查云凭据后重试。",codePipelineWorkspace:"CodePipeline 工作空间",codePipelinePipeline:"CodePipeline 流水线",openCodePipelineWorkspace:"在云控制台中打开 CodePipeline Workspace",createdOnFirstBuild:"首次构建时自动创建",containerRegistryRepository:"Container Registry 仓库",openContainerRegistryRepository:"在云控制台中打开 Container Registry 仓库",sandboxInfo:"沙箱信息",loadingSandboxInfo:"正在加载沙箱信息",sandboxInfoError:"沙箱信息加载失败,请重试。",snapshot:"快照版",snapshotWithSpace:"快照版 ",openToolConsole:"在云控制台中打开{{name}}",updateModelEnv:"更新{{variant}}{{name}}模型环境变量",modelEnvUpdated:"已更新",modelEnvAlreadyCurrent:"无需更新",userPool:"用户池",loadingUserPool:"正在加载用户池",userPoolError:"用户池加载失败,请重试。",modelEnvUpdateError:"模型环境变量更新失败,请重试。",openUserPoolConsole:"在云控制台中打开用户池{{name}}",unnamedUserPool:"未命名用户池",id:"ID",domain:"域名",region:"区域",noLocalUserPool:"本地模式未配置用户池",noUserPool:"当前 Studio 未配置用户池"},Fve={workspace:"Agent 工作区",library:"Agent 库",evaluation:"评测",agentList:"Agent 列表",agentDetails:"Agent 详情",newAgent:"新建 Agent",loading:"加载中…",loadingCloudAgents:"正在加载云端 Agent…",noAgentSelected:"请选择一个 Agent",local:"本地",remote:"云端",localAgent:"本地 Agent",remoteAgent:"云端 Agent",agentCount:"{{count}} 个 Agent",agentCountLabel:"Agent 数量",details:"详情",chat:"对话",update:"更新",backToAgentList:"返回 Agent 列表",loadingAgent:"正在加载 Agent",loadingAgentDescription:"正在读取 Agent 配置和 Runtime 信息。",loadingAgentInfo:"正在加载 Agent 信息…",detailLoadFailed:"无法加载 Agent 详情",detailLoadFailedDescription:"请检查 Runtime 状态后重试。",partialInfoUnavailable:"部分信息暂时不可用",upgradeRuntimeForDetails:"请升级 Runtime 以查看完整 Agent 信息。",basicInfo:"基本信息",usageOverview:"使用概览",sections:{basic:"基本信息",usage:"使用概览",evaluations:"评测",optimizations:"优化建议",integrations:"集成",versions:"版本"},evaluationGroup:"评测组",optimizations:"优化建议",optimizationsDescription:"根据评测结果查看可执行的优化建议。",integrations:"集成",githubVersions:"GitHub 版本",githubVersionsDescription:"查看持续交付产生的版本并创建回退 PR。",currentVersionOnly:"当前未启用 GitHub 持续交付,仅展示当前生产版本。",loadingVersions:"正在加载版本…",noVersion:"暂无版本记录",prLink:"Pull Request",viewPr:"查看 PR",author:"提交人",publishStatus:"发布状态",viewRelease:"查看发布记录",rollbackToVersion:"回退到此版本",rollingBack:"正在创建回退…",rollbackEvent:"回退事件",sourceMergedRuntimeStill:"最新源码已合并,但 Runtime 仍处于",currentProductionVersionHint:";当前生产版本保持不变。",usageSummary:"使用统计",totalCalls:"总调用次数",userCount:"用户数",userDetails:"用户明细",usageUserList:"Agent 使用用户列表",user:"用户",callCount:"调用次数",lastUsed:"最近使用",unknownUser:"未知用户",loadingUsage:"正在加载使用数据…",refreshing:"刷新中…",noUsage:"暂无使用记录",usageUnavailable:"当前 Agent 暂无可用的使用统计。",usagePagination:"使用记录分页",pageOf:"第 {{page}} / {{total}} 页",notProvided:"暂未提供",integrationMethods:"集成方式",integrationDescription:"通过 Runtime API 或 A2A 协议集成当前 Agent。",integrationProtocol:"集成协议",runtimeStatus:"Runtime 状态",executionFlow:"执行流程",probingIntegration:"正在检测集成能力",probingIntegrationDescription:"正在读取可用端点和鉴权配置。",configurationStatus:"配置状态",discoveryEndpoint:"发现端点",invocationEndpoint:"调用端点",invocationUrl:"调用地址",authentication:"鉴权方式",networkAccess:"网络访问",notAvailable:"暂无",noAuthentication:"无需鉴权",noApiKeyRequired:"无需 API Key",usesOauthJwt:"使用 OAuth / JWT",showApiKey:"显示 API Key",hideApiKey:"隐藏 API Key",pythonExample:"Python 示例",deploymentConfig:"部署配置",deploymentConfigDescription:"确认实例和运行配置后更新 Runtime。",deploymentRegion:"部署区域",concurrency:"并发数",selectedOptimizations:"已选优化项",selectedOptimizationsDescription:"这些优化会应用到本次更新。",optimizationProfile:"优化方案",updatePending:"等待更新",updatingDeployment:"正在更新部署",restoringUpdateConfig:"正在恢复更新配置…",updateConfigUnavailable:"无法读取更新配置",legacyConfigMissing:"旧版本 Runtime 缺少可恢复的配置,请重新创建。",deploymentFailed:"部署失败",continueEditing:"继续编辑",loadingOptimizations:"正在加载优化建议…",noOptimizations:"暂无优化建议",fixPriority:"优先级",suggestedModule:"建议模块",suggestionAndReason:"建议与原因",priority:{high:"高",medium:"中",low:"低"},modules:{agentStructure:"Agent 结构",prompt:"提示词",tool:"工具",knowledge:"知识库",memory:"记忆",workflow:"工作流",other:"其他"},evaluationGroupList:"评测组列表",newEvaluationGroup:"新建评测组",newEvaluationGroupName:"新评测组 {{count}}",searchEvaluationGroups:"搜索评测组",noMatchingEvaluationGroups:"没有匹配的评测组",noEvaluationGroupSelected:"请选择一个评测组",groupStats:"{{agents}} 个 Agent · {{runs}} 次运行",evaluationGroupDetails:"评测组详情",evaluationGroupStats:"{{agents}} 个 Agent · {{caseSet}} · {{runs}} 次运行",startEvaluation:"开始评测",evaluationConfig:"评测配置",historyResults:"历史结果",participatingAgents:"参与 Agent",selectedCount:"已选择 {{count}} 个",evaluationResources:"评测资源",evaluationSet:"评测集",evaluator:"评估器",caseCount:"{{count}} 条案例",evaluationMetrics:"评测指标",selectedMetricCount:"已选择 {{count}} 项",historyDescription:"查看每次评测的分数和运行状态。",noHistory:"暂无评测历史",noHistoryDescription:"运行一次评测后,结果会显示在这里。",evaluationRun:"第 {{index}} 次评测",evaluationRunMeta:"{{time}} · {{agents}} 个 Agent",overallScore:"综合分",completed:"已完成",evaluationDefaults:{coreRegression:"核心能力回归",safetyCheck:"安全与幻觉检查",coreSet:"核心回归集",safetySet:"安全边界集",toolSet:"工具调用集",qualityEvaluator:"综合质量评估器",factualEvaluator:"事实一致性评估器",toolEvaluator:"工具调用评估器",responseQuality:"回答质量",factualAccuracy:"事实准确性",toolUse:"工具调用",responseEfficiency:"响应效率",todayTime:"今天 10:32",yesterdayTime:"昨天 16:08",julyTime:"7 月 25 日 14:20",justNow:"刚刚"},defaultCases:{agentName:"示例 Agent",goodSetName:"示例正向案例集",badSetName:"示例负向案例集",weeklyFeedback:{input:"总结本周客户反馈,并按优先级归类。",output:"覆盖主要问题,给出清晰的优先级与下一步动作。",tag:"总结",reason:"任务完整覆盖了用户目标,输出结构清晰,并给出了可执行的下一步动作。"},research:{input:"查询最新公开资料并附上来源。",output:"调用搜索工具,结论与引用一一对应。",tag:"工具调用"},uncertainConclusion:{input:"在信息不足时直接给出确定结论。",output:"应明确说明未知,并主动询问缺失信息。",tag:"幻觉",reason:"信息不足时仍给出了确定结论,缺少必要的澄清步骤与不确定性说明。"},repeatedTool:{input:"连续重复调用相同工具获取同一结果。",output:"复用已有结果,避免无意义的重复调用。",tag:"效率"}},goodCases:"正向案例",badCases:"负向案例",goodCase:"正向案例",badCase:"负向案例",reference:"参考答案",caseResultFilter:"案例结果筛选",feedbackSourceFilter:"反馈来源筛选",searchCases:"搜索案例",searchCasesPlaceholder:"搜索输入、输出或标签",selectCases:"选择案例",selectAll:"全选",selectAllVisible:"选择当前可见案例",selectedCaseCount:"已选择 {{count}} 条",deleteSelected:"删除所选",deleteSelectedTitle:"删除所选 Agent",deleteSelectionDescription:"确定删除所选的 {{count}} 个项目吗?此操作无法撤销。",deleteCasesConfirm:"删除所选案例",deleteOneCaseConfirm:"删除这个案例",deleteFeedbackCase:"删除反馈案例",noFeedbackCases:"暂无反馈案例",noMatchingCases:"没有匹配的案例",loadingEvaluationSet:"正在加载评测集…",userInput:"用户输入",agentOutput:"Agent 输出",score:"得分",scoreReason:"评分原因",noUserInput:"暂无用户输入",noVisibleResponse:"暂无可见回复",note:"备注:",manualFeedback:"人工反馈",automaticFeedback:"自动反馈",scoreValue:"{{score}} 分",unknownTime:"时间未知",deleteAgentTitle:"删除 Agent",deleteAgentDescription:"确定删除 Agent“{{name}}”吗?",deleteDraftDescription:"确定删除草稿“{{name}}”吗?",deleteAgent:"删除 Agent",closeDeleteConfirmation:"关闭删除确认",draftDeletionWarning:"草稿将从当前浏览器中删除。",runtimeDeletionWarning:"Runtime 和相关云端资源将被删除。",noneSelected:"尚未选择",none:"无",notPublished:"未发布",notRecorded:"未记录",noTime:"暂无时间",noPr:"暂无 PR",comingSoon:"评测能力即将开放",preparing:"准备中",cancelled:"已取消",failed:"失败",totalCount:"共 {{count}} 条",deploymentProgress:"部署进度",returnToEdit:"返回编辑",buildLog:"构建日志",githubMountLog:"GitHub 挂载日志",githubDeliveryMountLog:"GitHub 持续交付挂载日志",waitingBuildLog:"正在等待构建日志…",waitingGithubMountLog:"正在等待 GitHub 挂载日志…",copy:"复制",copied:"已复制",copyLabel:"复制{{label}}",copiedLabel:"已复制{{label}}",logLines:"{{count}} 行",logStatus:{synced:"已同步",failed:"读取失败",syncing:"同步中",earlyOmitted:"已省略早期日志",recentOnly:"仅显示最近的构建日志",partiallyOmitted:"已省略部分日志"},deployStatus:{running:"正在部署",unconfirmed:"部署状态待确认",success:"部署完成",error:"部署失败",cancelled:"部署已取消"},deploymentSteps:{prepare:{label:"准备部署",description:"校验配置并创建部署任务"},build:{label:"构建镜像",description:"生成运行环境与智能体代码"},deploy:{label:"部署服务",description:"创建并启动 AgentKit Runtime"},publish:{label:"发布服务",description:"等待服务就绪并生成访问地址"},complete:{label:"部署完成",description:"智能体已可以正常使用"},evaluation:{label:"创建评测集",description:"自动创建 Good Case 和 Bad Case 评测集"},github:{label:"挂载 GitHub 持续交付",description:"初始化目标分支与 GitHub Actions workflow"},update:{label:"更新实例配置",description:"将 Runtime 实例数调整为 {{min}}~{{max}}"}},githubStatus:{published:"已发布",publishing:"发布中",failed:"发布失败",pending:"等待发布",unknown:"未知"},errors:{agentInfoMissing:"Agent 信息不可用",checkUpdateCapability:"无法检查更新能力",checkingUpdateConfig:"正在检查更新配置",cloudOnlyUpdate:"仅云端 Agent 支持更新",deleteDeployedUnsupported:"当前不支持删除已部署 Agent",deleteDraftUnsupported:"当前不支持删除草稿",loadAgentInfo:"无法加载 Agent 信息",loadApiKey:"无法读取 API Key",loadGithubVersions:"无法加载 GitHub 版本",loadEvaluations:"无法加载评测案例",loadOptimizations:"无法加载优化建议",loadRuntimeDetails:"无法加载 Runtime 详情",loadUsage:"无法加载使用数据",noCreatePermission:"当前账号没有创建 Agent 的权限",noManagePermission:"当前账号没有管理此 Agent 的权限",originalConfigUnavailable:"原始配置不可用",probeIntegration:"无法检测集成能力",rollbackVersion:"无法创建版本回退",runtimeRegionMissing:"Runtime 区域信息缺失",updateCapabilityMismatch:"Runtime 更新能力与当前配置不匹配",updateCapabilityPending:"Runtime 更新能力仍在确认中",updateConfigRestoring:"正在恢复更新配置",updateUnsupported:"当前 Runtime 不支持更新",usageMismatch:"返回的使用数据与当前 Agent 不匹配"}},Bve={title:"环境",loadFailed:"环境加载失败,请检查存储配置后重试。",create:"新建环境",configure:"配置环境",details:"环境详情",editorDescription:"配置运行环境,或接入代码仓库和已有镜像",backToList:"返回环境列表",save:"保存环境",createAndBuild:"创建并构建",saveAndBuild:"保存并构建",name:"环境名称",namePlaceholder:"Python 数据处理",descriptionPlaceholder:"说明这个环境适合处理的任务",creationMethod:"创建方式",baseConfiguration:"基础配置",baseEnvironment:"基础环境",operatingSystem:"操作系统",pythonVersion:"Python 版本",fixedByBase:"由 {{base}} 固定为 {{value}}",selectUbuntuVersion:"选择基础镜像的 Ubuntu 版本",selectPythonVersion:"选择需要安装的 Python 版本",skills:"技能",addSkill:"添加环境技能",veadkDescription:"Agent 开发与运行框架",customDockerfile:"自定义 Dockerfile",presetEnvironment:"预制环境",presetHint:"选择“无”可自行填写 Dockerfile 第一行的基础镜像。",dockerfileSize:"{{size}} / {{max}} 字节",upload:"上传",reset:"重置",dockerfileBaseImage:"Dockerfile 基础镜像",dockerfileContent:"Dockerfile 内容",region:"区域",search:"搜索环境",manualImport:"手动导入",noMatches:"没有匹配的环境",tryAnotherName:"请尝试搜索其他名称",startBuild:"开始构建",build:"构建",unnamed:"未命名环境",listSeparator:"、",clipboardReadError:"未能读取剪贴板。请允许剪贴板权限,或点击“导入环境”后手动粘贴分享码。",clipboardUnsupported:"当前浏览器无法自动读取剪贴板;请点击“导入环境”后手动粘贴分享码。",creation:{custom:{label:"自定义配置",description:"通过表单选择基础环境、Python、工具和技能"},dockerfile:{label:"自定义 Dockerfile",description:"上传或直接编辑 Dockerfile"},git:{label:"从代码仓库构建",description:"探查公开仓库并通过 CodePipeline 构建"},image:{label:"使用已有镜像",description:"绑定由外部流水线交付的 CR 镜像"}},baseDescriptions:{"aio-sandbox":"内置 Sandbox Shell 能力 · Ubuntu 22.04","codex-sandbox":"内置 Codex CLI、浏览器与代码执行环境",ubuntu:"标准 Linux 基础镜像"},dockerfileValidation:{baseImageRequired:"请填写基础镜像。",duplicateFrom:"基础镜像已固定在第一行,请删除 Dockerfile 正文中的 FROM 指令。",tooLarge:"Dockerfile 不能超过 128 KiB。",empty:"Dockerfile 内容不能为空。",missingFrom:"Dockerfile 缺少 FROM 指令。"},presets:{none:"自行填写 Dockerfile 基础镜像",aio:"内置 Sandbox Shell 与常用运行时",codex:"内置 Codex CLI、浏览器与代码执行环境"},categories:{tools:"工具",productivity:"效率",browser:"浏览器自动化",system:"系统与媒体"},options:{"lark-cli":"飞书开放平台命令行工具",pandoc:"文档格式转换工具",opencli:"将网站与桌面应用转换为命令行工具",uv:"快速 Python 包与项目管理器",ripgrep:"高性能文本检索工具",jq:"JSON 查询与转换工具","github-cli":"在终端中管理 GitHub 工作流",playwright:"浏览器自动化与端到端测试",chromium:"无头浏览器运行时",git:"代码版本管理",curl:"网络请求与文件下载",ffmpeg:"音视频转码与处理",imagemagick:"图片转换与批处理"},duration:{seconds:"{{count}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒",hoursMinutes:"{{hours}} 小时 {{minutes}} 分"},buildStatus:{preparing:"准备中",queued:"排队中",building:"构建中",scanning:"扫描中",available:"可用",failed:"构建失败",notBuilt:"未构建"},manifest:{title:"环境 Manifest",closeLabel:"关闭环境 Manifest",loading:"正在加载 Manifest",editorLabel:"环境 Manifest YAML",copyFailed:"复制失败,请重试",copied:"已复制",copy:"复制 Manifest",view:"查看环境 Manifest",viewShort:"查看 Manifest",unavailable:"尚无可用 Manifest"},buildDetails:{title:"构建详情",closeLabel:"关闭构建详情",currentStep:"当前步骤",waiting:"等待构建信息",elapsed:"已用时",sourceCommit:"源码提交",openCodePipeline:"在 CodePipeline 中查看",starting:"正在启动",rebuild:"重新构建"},git:{sectionLabel:"公开代码仓库",address:"Git 地址",ref:"Branch、Tag 或 Commit",defaultBranch:"默认分支",inspecting:"正在拉取仓库并查找 Dockerfile",foundDockerfiles:"已在提交 {{commit}} 中找到 {{count}} 个 Dockerfile。",savedDockerfileLoaded:"已载入保存的 Dockerfile,可重新探查仓库更新。",noDockerfile:"仓库中未找到 Dockerfile,请检查分支或仓库内容。",inspectAgain:"重新探查",selectDockerfile:"选择 Dockerfile"},repository:{outputSection:"构建输出",type:"镜像仓库类型",managed:"Studio 默认镜像仓库",existing:"已有镜像仓库",managedHint:"构建时自动创建或复用当前区域的 Studio 镜像仓库。"},existingImage:{sectionLabel:"已有镜像",reference:"Tag 或 Digest",placeholder:"latest 或 sha256:...",hint:"填写镜像 Tag,或以 sha256: 开头的完整 Digest。"},share:{action:"分享",title:"分享环境",closeLabel:"关闭分享环境",generating:"正在生成并复制分享码",copied:"分享码已复制",failed:"分享失败",code:"分享码",fullCode:"完整环境分享码",copiedHint:"分享码已自动复制,也可在这里查看或手动复制。",copyFailedHint:"自动复制失败,可手动复制上方分享码,或重试。",safety:"分享码可能包含环境配置与本地 Skill 内容,请仅发送给可信对象。",copyAgain:"再次复制"},import:{title:"导入环境",closeLabel:"关闭导入环境",description:"先检测分享码中的环境,再确认添加到当前账号。",code:"环境分享码",tooMany:"最多可一次导入 {{max}} 个环境,当前检测到 {{count}} 个分享码。",multipleHint:"多个分享码可使用英文逗号、中文逗号或换行分隔,重复项会自动忽略。",safety:"分享码可能包含环境配置与本地 Skill 内容,请仅导入可信来源的分享码。",inspectingCodes:"正在检测环境分享码",found:"检测到 {{count}} 个环境:{{names}}。",itemError:"第 {{index}} 个分享码:{{error}}",invalidCode:"分享码无效。",noResult:"服务未返回该分享码的导入结果。",partial:"已导入 {{created}} 个环境,{{remaining}} 个未完成,可重试有效失败项。",inspecting:"正在检测",importing:"正在导入",retryImport:"重试导入",confirm:"确认导入",inspectCodes:"检测分享码"},status:{boundImage:"环境“{{name}}”已绑定已有镜像",queued:"环境“{{name}}”已进入构建队列",savedBuildFailed:"环境已保存,但构建未启动:{{error}}",importedFailed:"已导入 {{created}} 个环境,{{failed}} 个失败",importedDuplicate:"已导入 {{created}} 个环境,{{duplicate}} 个分享码已存在",imported:"已导入 {{count}} 个环境",deleted:"已删除环境“{{name}}”"},deleteTitle:"删除环境",deleteDescription:"确定删除环境“{{name}}”吗?删除后无法恢复。",errors:{repositoryRequired:"请输入公开代码仓库地址。",repositoryHttps:"请输入公开仓库的 HTTPS 地址。",repositoryInvalid:"请输入有效的公开仓库 HTTPS 地址。",imageReferenceWhitespace:"Tag 或 Digest 不能包含空格。",imageDigestInvalid:"Digest 必须是完整的 sha256 值。",imageTagOnly:"这里只填写 Tag,不要重复填写镜像仓库路径。"}},Uve={searchPlaceholder:"搜索资源名称",emptyMessage:"暂无可用选项",searchAriaLabel:"搜索{{label}}",loadingMore:"正在加载更多资源…"},Qve={retryDeployment:"重试部署",retrying:"正在重试…",collapse:"收起错误信息",expand:"展开完整错误信息",copy:"复制完整错误信息"},zve={steps:"构建步骤",log:"构建日志",syncing:"同步中",loadFailed:"读取失败",synced:"已同步",recentOnly:" · 仅显示最近日志",copiedLog:"已复制构建日志",copyLog:"复制构建日志",copied:"已复制",copy:"复制",logContent:"构建日志内容",waiting:"正在等待 CodePipeline 输出日志…",empty:"暂无构建日志"},Vve={defaultLabel:"Studio 默认环境",defaultDescription:"使用 Studio 预置的标准运行环境",status:{notBuilt:"未构建",preparing:"准备中",queued:"排队中",building:"构建中",scanning:"扫描中",available:"可用",failed:"失败"},label:"运行环境",placeholder:"请选择运行环境",search:"搜索运行环境",loading:"正在加载运行环境…",loadFailed:"加载运行环境失败",noMatches:"未找到匹配的运行环境",unavailable:"当前没有可用的运行环境",selectionUnavailable:"所选运行环境当前不可用,请重新选择。",selectionHint:"选择构建完成的运行环境后,部署将使用其镜像和工具配置。",versionChanged:"所选环境版本已更新,请确认后继续。",versionMissing:"所选环境版本已不存在,请重新选择。",operatingSystem:"操作系统",language:"语言",image:"镜像",imageVersion:"镜像版本",skills:"技能",tools:"工具",noSkills:"未配置 Skill",noExtraTools:"未配置额外工具",defaultGuidance:"默认环境由 Studio 管理,无需额外配置。",persistenceFallback:"持久化环境服务暂不可用,当前使用默认环境。",emptyFallback:"当前没有可选择的自定义环境。"},Hve={repository:"GitHub 仓库",githubUrl:"GitHub 地址",token:"访问令牌",sessionToken:"{{provider}} 临时令牌",runtime:"Runtime",commit:"提交",workflow:"工作流",syncFailed:"同步 GitHub 代码失败",status:{mounted:"已挂载",bound:"已绑定",synced:"已同步",created:"已创建"},volcengine:"火山引擎",mountDelivery:"挂载持续交付",selectedForDeployment:"已选择,部署时挂载",mountOnDeploy:"部署时挂载持续交付",syncCode:"同步代码",deliveryMode:"GitHub 交付模式",sourceSync:"GitHub 代码同步",delivery:"GitHub 交付",loading:"读取中",running:"执行中",runtimeDeliveryHint:"写入 AgentKit Runtime GitHub Actions workflow,后续 GitHub 提交会更新绑定 Runtime。",initialDeliveryHint:"首次部署成功后初始化目标分支,后续 GitHub 提交会更新绑定 Runtime。",sourceSyncHint:"Studio 会直接 push 到目标分支;该分支由 Studio 管理,远端冲突时同步会失败。Runtime 仍由部署按钮发布。",tokenPlaceholder:"repo 或 contents write 权限",getToken:"获取 Token",hideToken:"隐藏 Token",showToken:"显示 Token",tokenHelp:"Token 仅用于本次操作,成功后不会保留在表单中。",targetBranch:"目标分支",actionsSecretPlaceholder:"用于写入 GitHub Actions Secret",sessionTokenPlaceholder:"临时凭证可选",syncing:"同步中…",pendingHint:"已选择挂载持续交付。点击部署后,Studio 会等待 Runtime 创建完成并初始化 GitHub 目标分支,初始化成功后才完成部署流程。",result:{deliveryMounted:"已挂载持续交付",deliverySelected:"已选择挂载持续交付",githubBound:"已绑定 GitHub",codeSynced:"代码已同步",deliveryHint:"目标分支提交会触发 Runtime 持续交付。",boundHint:"更新并发布时会先同步当前源码到这个分支。"},branch:"分支",viewPr:"查看 PR",createFailed:"创建失败",phase:"阶段",log:"日志"},qve={name:"飞书",enabling:"正在启用并更新配置…",description:"接收消息并通过飞书机器人回复",configuration:"飞书配置",configurationMode:"飞书配置方式",automatic:"自动配置",manual:"手动配置",cancelling:"取消中…",scanToCreate:"扫码创建",scanDescription:"授权后自动回填凭据",generateQrCode:"生成二维码",qrCodeAlt:"飞书机器人配置二维码",scanToConfirm:"飞书扫码确认",expiresIn:"{{time}} 后失效",created:"机器人已创建",credentialsFilled:"应用凭据已自动回填",qrCodeExpired:"二维码已失效",automaticFailed:"自动配置失败",regenerateQrCode:"请重新生成二维码。",configuredPlaceholder:"已配置,留空沿用",appSecretPlaceholder:"请输入 App Secret",hideSecret:"隐藏 App Secret",showSecret:"显示 App Secret"},Wve={mode:{auto:"自动创建",autoDescription:"部署时自动创建所需资源",recommended:"推荐",create:"指定名称",createDescription:"使用指定名称创建或复用资源",existing:"选择已有",existingDescription:"从当前账号的已有资源中选择"},selectExisting:"请选择已有资源",searchResource:"搜索资源名称",noMatch:"未找到匹配资源",noAvailable:"暂无可用资源",searching:"正在搜索云资源…",loading:"正在加载云资源…",noMatchSentence:"未找到匹配资源。",noAvailableSentence:"暂无可用资源。",loadedSummary:"实际服务区域:{{region}} · 已加载 {{loaded}}{{total}}",registryInstance:"Registry 实例",registryAriaLabel:"镜像仓库 Registry 实例",namespace:"命名空间",namespaceAriaLabel:"镜像仓库 Namespace",repository:"镜像仓库",existingRepository:"已有镜像仓库",selectRegistryFirst:"请先选择 Registry 实例。",selectNamespaceFirst:"请先选择 Namespace。",configurationMode:"配置方式",configurationModeAriaLabel:"{{resource}}配置方式",selectConfigurationMode:"请选择配置方式",automaticNames:"自动创建名称",validation:{tos:"请填写或选择 TOS 存储桶。",cr:"请完整填写或选择 CR 实例、命名空间和镜像仓库。",codePipeline:"请完整填写或选择 CodePipeline Workspace 和 Pipeline。",existingCodePipeline:"请选择已有的 CodePipeline Workspace 和兼容 Pipeline。"},autoBucketWithRegion:"agentkit-platform-{账号 ID}-{{region}}",autoBucket:"agentkit-platform-{账号 ID}",tosBucket:"TOS 存储桶",bucketName:"存储桶名称",bucketNamePlaceholder:"输入存储桶名称",existingBucket:"已有存储桶",existingTosBucket:"已有 TOS 存储桶",bucket:"存储桶",accountIdResolved:"账号 ID 在部署时按当前云账号解析。",containerRegistry:"容器镜像仓库(CR)",instanceName:"实例名称",crInstance:"CR 实例",existingCrInstance:"已有 CR 实例",existingCrNamespace:"已有 CR 命名空间",existingCrRepository:"已有 CR 镜像仓库",autoRegistry:"agentkit-platform-{账号 ID}",autoRepositoryName:"{{name}}-{4 位随机字符}",registryNameNote:"账号 ID 在部署时解析,镜像仓库的随机字符在部署时生成。",workspace:"工作空间",pipeline:"流水线",workspaceName:"Workspace 名称",pipelineName:"Pipeline 名称",existingWorkspace:"已有 CodePipeline Workspace",compatiblePipeline:"兼容 Pipeline",existingPipeline:"已有 AgentKit CodePipeline",pipelineNameNote:"Pipeline 与 Runtime 名称一致。"},Kve={commit:"提交",steps:{permissions:"预检 OTA 所需权限",resolving:"读取目标版本信息",downloading:"下载并校验完整更新包",preparing:"准备 VeFaaS Function 代码",provisioning:"检查并补齐 Studio 云资源",scheduler:"更新定时任务调度服务",submitting:"提交 Function 更新",publishing:"发布新 Revision 并重启服务"},stages:{permissions:"预检 OTA 权限",resolving:"读取版本信息",downloading:"下载更新包",preparing:"准备 Function 代码",provisioning:"补齐 Studio 云资源",scheduler:"更新定时任务调度服务",submitting:"提交 Function 更新",publishing:"发布 Revision",checking:"检查更新",unknown:"未知阶段"},duration:{seconds:"{{count}} 秒",minutesSeconds:"{{minutes}} 分 {{seconds}} 秒"},logPermissionPrefix:"无法读取 VeFaaS 发布日志。Function 角色缺少 ",logPermissionSuffix:" 权限,更新会继续。",openIamConsole:"前往 IAM 控制台配置权限",deploymentProgress:"部署进度",live:"实时",completed:"已完成",stopped:"已停止",copied:"已复制",copyFailed:"复制失败",copyLog:"复制日志",waitingForLogs:"等待 VeFaaS 返回更新日志…",noLogs:"本次更新未返回发布日志",messages:{updated:"Studio 已更新,新 Revision 已接管服务",failed:"Studio 更新失败",timeout:"等待 VeFaaS 发布超时,请稍后重新检查版本",submitted:"更新已提交,正在等待 VeFaaS 发布新版本",connectionSwitched:"连接已切换,正在确认新版本状态"},checkingPermissions:"正在检查 OTA 权限",authorizationRequired:"需要 IAM 授权",updating:"正在更新 Studio",updated:"Studio 已更新",updateToVersion:"更新 Studio 至 {{version}}",checkPermissions:"检查更新权限",authorizationNeeded:"需要授权",updatingShort:"正在更新",refreshForNewVersion:"刷新使用新版",updateFailed:"更新失败",updateNow:"立即更新",newVersionAvailable:"有新版更新",dialog:{failed:"Studio 更新失败",checkingPermissions:"正在检查更新权限",authorizationRequired:"需要 IAM 授权",updating:"正在更新 Studio",completed:"Studio 更新完成",newVersion:"发现新版本"},permissionCheck:"正在核对 OTA 与定时任务所需的全部 IAM 权限…",permissionCheckHint:"权限全部满足后才会开始下载、更新或发布云资源。",missingPermissionCount:"当前 Function 角色缺少 {{count}} 项 OTA 更新权限,尚未执行任何云资源变更。",functionRole:"Function 角色",currentRole:"当前运行角色",policyToUpdate:"将更新策略",authorizationSteps:{open:"打开授权页面,确认已预填的策略名称和完整策略内容。",debug:"点击页面中的“发起调试”,完成策略更新。",return:"返回此窗口,点击“我已授权,重新检查”。"},missingPermissions:"缺少的权限",openPrefilledAuthorization:"打开已预填的 IAM 授权页面",openIamManually:"前往 IAM 控制台手动配置",noSafePolicy:"当前角色没有唯一可安全更新的自定义策略,请由管理员将上述权限加入该角色。",failedStage:"失败阶段",errorId:"错误 ID",notGenerated:"未生成",openFunctionLogs:"前往 VeFaaS 控制台查看 Function 日志",targetVersion:"目标版本",updateStatus:"更新状态",elapsed:"已用时",progressAriaLabel:"Studio 更新进度",processingUpdate:"正在处理更新",processing:"正在处理",backgroundHint:"发布阶段会短暂中断连接;关闭此窗口不会停止更新,可随时点击右上角按钮重新查看。",confirmDescription:"更新会重启 Studio 服务,预计约 3–5 分钟完成更新与发布。期间正在进行的对话、流式响应或部署任务可能中断,登录态不会受到影响。",selectVersion:"选择版本",currentVersion:"当前版本",changelog:"更新内容",noChangelog:"暂无更新说明",runInBackground:"后台运行",authorizedRecheck:"我已授权,重新检查",tryAgain:"重新尝试"},Gve={deploy:"部署",update:"更新",planHash:"方案哈希",backToConfiguration:"返回配置",releaseRegion:"发布区域",deployRegion:"部署区域",regionPreserved:"更新时沿用现有 Runtime 的部署区域,无法修改。",unnamedAgent:"未命名 Agent",deployTitle:"部署 {{name}}",additionalAgentCount:" 等 {{count}} 个智能体",releaseOverview:"发布概览",agentOverview:"Agent 概览",agentCount:"Agent 数量",model:"模型",systemPrompt:"系统提示词",optimizations:"优化选项",notEnabled:"未启用",effectiveCapabilities:"生效能力",automaticProtection:"自动保护",artifactActions:"发布产物操作",exportYaml:"导出 YAML",viewSource:"查看源代码",downloadSource:"下载源代码",expandFlow:"放大查看执行流程",expand:"放大查看",deploymentConfiguration:"部署配置",runtimeName:"Runtime 名称",runtimeNamePreserved:"更新时保持现有 Runtime 名称不变。",runtimeNameHint:"默认根据 Root Agent 名称生成,并添加随机后缀避免重名;支持 4-64 位字母、数字、连字符和下划线",accessAuthentication:"访问鉴权",authenticationPreserved:"更新时保持现有 Runtime 的鉴权方式不变。",authenticationMethod:"鉴权方式",authenticationAriaLabel:"部署鉴权方式",authenticationPlaceholder:"请选择鉴权方式",messageChannels:"消息渠道",instanceSettings:"实例设置",minInstances:"最小实例数",maxInstances:"最大实例数",sidecarSingleInstance:"Harness Sidecar 首期仅支持单实例,Runtime 固定为 1~1",inMemorySingleInstance:"为避免多实例间会话丢失,推荐将 Runtime 固定为 1~1",network:"网络",networkPreserved:"现有 Runtime 的区域与网络模式保持不变。",networkMode:"网络模式",networkModes:{public:"公网",both:"公网 + VPC"},subnetId:"子网 ID",subnetHint:"可选,多个用逗号分隔",sharedInternetAccess:"VPC 内共享公网出口",evaluationSets:"评测集",createEvaluationSets:"自动创建评测集",createEvaluationSetsHint:"部署成功后,自动创建 Good Case 和 Bad Case 评测集。",resourceConfiguration:"资源配置",environmentVariables:"环境变量",environmentVariablesHint:"组件配置会自动同步到这里,部署前可核对最终值。",itemCount:"{{count}} 项",addVariable:"添加变量",componentGenerated:"组件自动生成",injectedByApiKey:"由所选 API Key 注入",envNameAriaLabel:"{{key}} 环境变量名",envDescriptionAriaLabel:"{{key}}说明:{{description}}",openOpenViking:"打开 OpenViking {{label}}",openOpenVikingAriaLabel:"{{key}}:打开 OpenViking {{label}}",requiredEmpty:"必填,尚未填写",optionalEmpty:"可选,尚未填写",envValueAriaLabel:"{{key}} 环境变量值",automatic:"自动",synced:"同步",customModelCredentials:"自定义模型凭据",releaseOnlySecret:"必填,仅用于本次发布",thisRelease:"本次发布",customVariables:"自定义变量",value:"值",deleteVariable:"删除变量",deploymentProgress:"部署进度",retryUpdate:"重试更新",retryDeploy:"重试部署",updateSucceeded:"更新成功",deploySucceeded:"部署成功",region:"区域",agentName:"Agent 名称",apiEndpoint:"API 端点",connecting:"连接中…",chatNow:"立即对话",console:"控制台",actionInProgress:"{{action}}中…",checkingName:"正在检查名称…",retryAction:"重试{{action}}",flowPreview:"执行流程预览",executionFlow:"执行流程",flowPreviewHint:"只读预览,可缩放与拖动画布",closeFlowPreview:"关闭执行流程预览",agentAdded:'Agent "{{name}}" 已添加到左上角下拉列表!',files:{preview:"文件预览",new:"新建文件",empty:"暂无文件",noneSelected:"未选择文件",selectToView:"选择左侧文件以查看内容",loadingEditor:"加载编辑器…",rename:"重命名",renamePrompt:"重命名文件"},apiKey:{selectFirst:"请先选择 API Key",revealing:"正在显示 API Key",hide:"隐藏 API Key",retryReveal:"重试显示 API Key",reveal:"显示 API Key"},task:{preparing:"准备部署",waitingBuildLog:"正在等待构建日志…",waitingGithubLog:"正在等待 GitHub 挂载日志…",syncingGithub:"正在同步当前源码到 GitHub",syncGithubCode:"同步 GitHub 代码",githubSynced:"GitHub 代码已同步",githubSubmitted:"GitHub 代码已提交",githubUpdatingRuntime:"代码已提交到 GitHub,GitHub Actions 正在更新同一个 Runtime",initializingGithub:"开始初始化 GitHub main 分支与 Actions workflow",initializingGithubBranch:"正在初始化 GitHub 持续交付目标分支",mountGithubDelivery:"挂载 GitHub 持续交付",githubBranchInitialized:"GitHub 持续交付已初始化目标分支",githubDeliveryMounted:"GitHub 持续交付已挂载",githubMountFailed:"挂载 GitHub 持续交付失败",githubMountFailedDetail:"GitHub 持续交付挂载失败:{{message}}",githubMountFailedHint:"挂载 GitHub 持续交付失败,详见 GitHub 日志。",deploymentComplete:"部署完成",deployedNotConnected:"部署完成,暂未连接",cancelled:"已取消",cancelledHint:"部署已取消,相关 Runtime 资源已请求销毁。",deploymentStatusUnconfirmed:"部署状态待确认",deploymentFailed:"部署失败",buildFailedHint:"构建镜像失败,详见构建日志。"},confirm:{updateTitle:"确认更新",deployTitle:"确认部署",closeLabel:"关闭部署确认",updateDescription:"将更新并发布到当前云端 Runtime,过程可能需要几分钟。确定继续吗?",deployDescription:"将创建新的云端 Runtime,部署过程可能需要几分钟。确定继续吗?",update:"确定更新",deploy:"确定部署"},userPool:{label:"用户池",unnamed:"未命名用户池",current:"当前用户池",ariaLabel:"部署用户池",loading:"正在加载用户池…",placeholder:"请选择用户池",loadingIdentity:"正在加载 Identity 用户池…",empty:"当前账号下暂无 Identity 用户池。",currentHint:"当前 Studio 的登录 JWT 将透传访问此 Runtime。",mismatchHint:"所选用户池不是当前 Studio 使用的用户池,部署后无法从 Studio 调用此 Runtime。",markedHint:"当前 Studio 使用的用户池已在列表中标注。"},authentication:{apiKeyDescription:"默认方式,使用 Runtime API Key 访问",userPool:"用户池",userPoolDescription:"使用 Identity 用户池签发的 JWT"},steps:{buildImage:"构建镜像",deploy:"部署",publish:"发布",syncCode:"同步代码",uploadPackage:"上传代码包",packageImage:"镜像打包",createRuntime:"创建 Runtime",publishService:"发布服务",updateInstances:"更新实例配置",createEvaluationSets:"创建评测集"},errors:{instanceRangeInteger:"最小实例数必须为大于等于 0 的整数,最大实例数必须为大于 0 的整数。",instanceRangeOrder:"最小实例数不能大于最大实例数。",selectApiKey:"请先在模型配置中选择 API Key。",loadApiKey:"加载 API Key 失败,请重试。",invalidProject:"项目数据无效",updateFeishu:"更新飞书配置失败:{{message}}",userPoolRequired:"请选择用于 Runtime 鉴权的用户池。",vpcRequired:"使用 VPC 网络时,请填写 VPC ID。",modelSecretRequired:"请填写 {{label}},用于访问对应的自定义模型地址。",managedApiKeyRequired:"{{requirement}},请先返回模型配置选择 API Key。",feishuEnvRequired:"启用飞书后,请填写{{field}}。",runtimeNameExists:"Runtime 名称已存在,请修改后重试。",deployedButGithubMountFailed:"部署成功,但挂载 GitHub 持续交付失败:{{message}}",deployedButGithubBindFailed:"部署成功,但绑定 GitHub 失败:{{message}}",deploymentStatusUnconfirmed:"连接已中断,当前无法确认部署最终状态。任务可能仍在云端运行,请到 AgentKit 或 Code Pipeline 查看同一任务,避免重复部署。",failedAtStage:"{{action}}失败({{stage}}阶段):{{message}}",noAgentAtEndpoint:"连接成功,但该地址未发现任何 Agent(/list-apps 为空)。",addAgent:"添加 Agent 失败:{{message}}",modelApiKeyRequired:"请填写此模型地址对应的 API Key。"}},Xve={title:"工作区",detail:"工作区详情",create:"新建工作区",editorDescription:"将常用环境组合在一起;同一个环境可以加入多个工作区。",backToList:"返回工作区列表",environmentCount_one:"{{count}} 个环境",environmentCount_other:"{{count}} 个环境",createdAt:"创建时间",updatedAt:"最近更新",basicInfo:"基本信息",namePlaceholder:"例如:内容生产",descriptionPlaceholder:"说明这个工作区的用途",selectedEnvironmentCount:"已选择 {{count}} 个,可在其他工作区中继续复用",searchAvailableEnvironments:"搜索可用环境",searchEnvironments:"搜索环境",noAvailableEnvironments:"还没有可添加的环境",createEnvironmentFirst:"请先在“环境”页面创建并构建环境。",noMatchingEnvironments:"没有匹配的环境",tryAnotherName:"请尝试搜索其他名称。",environmentStatus:{available:"可用",building:"构建中",notBuilt:"未构建"},added:"已添加",saved:"已保存工作区“{{name}}”",resourceType:"工作区资源类型",searchWorkspaces:"搜索工作区",loadFailed:"无法加载工作区",noMatchingWorkspaces:"没有匹配的工作区",tryAnotherNameOrEnvironment:"请尝试搜索其他名称或环境",noEnvironmentAdded:"未添加环境",environmentMissing:"环境缺失",availableFraction:"{{available}}/{{total}} 可用",available:"可用",availableCount:"{{count}} 个可用",updated:"更新",addEnvironment:"添加环境",deleteTitle:"删除工作区",deleteDescription:"确定删除工作区“{{name}}”吗?环境本身不会被删除。",deleted:"已删除工作区“{{name}}”",clipboardPermissionError:"未能读取剪贴板。请允许剪贴板权限,或点击“导入环境”后手动粘贴分享码。",clipboardUnsupported:"当前浏览器无法自动读取剪贴板;请点击“导入环境”后手动粘贴分享码。",codeProjects:"代码项目"},Yve={back:"返回",detailNavigation:"详情导航",noData:"暂无数据",actions:"操作",moreActions:"更多操作 {{label}}",actionsFor:"{{label}} 操作",loading:"资源加载中,请稍候"},Zve={addSkill:"添加 Skill",remove:"移除 {{name}}",confirmRemoveRuntime:"从新版本中移除运行中的 Skill「{{name}}」?",selectedCount:"已加入技能 · {{count}}",close:"关闭{{label}}",sources:{runtime:"运行中来源 · 原样保留,可移除或用同名 Skill 替换",local:"本地",skillspace:"AgentKit Skills 中心",skillhub:"火山 Find Skill 技能广场"},tabs:{local:"本地文件",localShort:"本地文件",skillspace:"AgentKit Skills 中心",skillspaceShort:"AgentKit",skillhub:"火山 Find Skill 技能广场",skillhubShort:"Find Skill"}},Jve={tasks:{ppt:"PPT",image:"图片生成",video:"视频生成"},prompts:{ppt:{quarterlyReview:"复盘【季度】经营表现,提炼指标差距、原因与行动建议",projectUpdate:"汇报【项目名称】进展:里程碑、风险、预算和资源诉求",solutionProposal:"为【客户行业】输出解决方案:痛点、架构、实施路径与收益",industryAnalysis:"分析【行业主题】趋势,给出竞争格局、机会与战略建议"},image:{launchVisual:"为【品牌或产品】设计【高级科技】风格的发布会主视觉",ecommercePoster:"生成【产品名称】电商海报,突出【核心卖点】与品牌色",conceptRendering:"呈现【产品或空间】在【使用场景】中的写实概念效果图",socialGraphic:"围绕【传播主题】制作简洁专业的企业社媒配图"},video:{brandFilm:"制作【品牌名称】30 秒宣传片,突出【品牌价值】",productLaunch:"为【产品名称】制作 45 秒发布视频:痛点、功能、场景与行动号召",trainingVideo:"制作【培训主题】企业培训视频,讲清【关键操作或规范】",eventTeaser:"生成【活动名称】20 秒预热视频,包含亮点、时间地点和报名信息"}},firstFrame:"首帧",videoToEdit:"待编辑视频",baseVideo:"基础视频",optimizeSkillPlaceholder:"描述你想优化的技能…",createSkillPlaceholder:"描述你想生成的技能…",createVideoPlaceholder:"描述你想创作的视频…",messageAgentPlaceholder:"向 {{name}} 发消息…",selectAgentFirst:"请先选择智能体",selectSkillFirst:"请先选择需要优化的 Skill",availableSkills:"可用技能",availableSubagents:"可用子 Agent",invokeSkill:"调用技能",useSubagent:"使用子 Agent",loadingCapabilities:"正在读取 Agent 能力…",noMatchingSkills:"当前 Agent 没有匹配技能",noMatchingSubagents:"当前 Agent 没有匹配子 Agent",skillFallbackDescription:"加载并执行该技能",agentFallbackDescription:"将本轮交给该 Agent",skill:"技能",uploadImage:"上传图片",uploadDocument:"上传文档或 PDF",uploadVideo:"上传视频",taskMode:"任务模式",selectTaskMode:"选择任务模式",loadingGenerationModel:"正在加载生成模型",modelUnavailable:"模型不可用",cancelTask:"取消{{task}}任务",stopGenerating:"停止生成",viewVideoProgress:"查看视频生成进度",send:"发送",selectTaskType:"选择任务类型",enterprisePrompts:"{{task}}企业提示词",sessionId:"会话 ID",sessionIdLabel:"会话 ID:",initializing:"初始化中",copied:"已复制",copySessionId:"复制会话 ID",sessionIdCopied:"已复制会话 ID",disclaimer:"回答仅供参考",viewLogs:"查看日志"},exe={selectAgent:"选择 Agent",noLocalAgents:"暂无本地 Agent。",searchRuntime:"搜索 Runtime 名称",mineOnly:"只看我创建的",noRuntimes:"暂无 Runtime。",unsupported:"不支持",createdByMe:"我创建的",connecting:"连接中…",connected:"已连接",connect:"连接",viewInfoFor:"查看 {{name}} 信息",viewInfo:"查看信息",agentAndRuntimeInfo:"Agent 与 Runtime 信息",detailType:"详情类型",agentInfo:"Agent 信息",runtimeInfo:"Runtime 信息",loadingAgentInfo:"读取 Agent 信息…",cannotLoadAgentInfo:"暂时无法读取 Agent 信息",unnamedAgent:"未命名 Agent",subagents:"子 Agent",tools:"工具",skills:"技能",previewUnsupported:"暂不支持预览",mountedComponents:"挂载组件",noMoreAgentInfo:"暂无更多 Agent 配置信息。",local:"本地",model:"模型",status:"状态",memoryMb:"内存 {{value}}MB",instances:"实例 {{min}}~{{max}}",resources:"资源",version:"版本",loadingDetails:"读取详情…",environmentVariables:"环境变量",errors:{notFound:"该 Runtime 已不存在或列表信息已过期,请刷新列表后重试。",accessDenied:"当前账号无权访问该 Runtime,请检查所属 Project 和访问权限。",previewUnsupported:"该 Agent Server 版本暂不支持信息预览。",unavailable:"该 Runtime 暂时无法访问,请确认其状态为“就绪”后重试。",timeout:"加载超时,请重试"},componentKinds:{knowledgebase:"知识库",memory:"记忆",prompt_manager:"提示词管理",example_store:"样例库",run_processor:"运行处理器",tracer:"链路追踪",toolset:"工具集",plugin:"插件",other:"其他"},runtimeStatus:{ready:"就绪",unreleased:"未发布",running:"运行中",active:"运行中",creating:"创建中",pending:"等待中",deploying:"部署中",updating:"更新中",failed:"失败",error:"异常",stopping:"停止中",stopped:"已停止",deleting:"删除中",deleted:"已删除"}},txe={agent:"智能体",agentTypes:{general:"通用智能体",codex:"Codex","deepseek-harness":"DeepSeek",openclaw:"OpenClaw",hermes:"Hermes"},creator:"创建人",namedAgent:"{{name}} 智能体",storageLocation:"存储位置",currentBrowser:"当前浏览器",region:"地域",viewDeploymentProgress:"查看 {{name}} 部署进度",viewRuntimeDetails:"查看 {{name}} Runtime 详情",viewDetails:"查看 {{name}} 详情",time:"时间",remainingTime:"剩余时间",expiringSoon:"即将清空",sandboxRemaining:"{{hours}} 小时 {{minutes}} 分钟",wakeable:"已休眠",neverExpires:"永不过期",editDraftNamed:"编辑草稿 {{name}}",viewProgress:"查看进度",deleteDraftNamed:"删除草稿 {{name}}",recheckCompatibility:"重新检测 {{name}} 的对话兼容性",connectedNamed:"{{name}} 已连接",wakeAndChat:"唤醒 {{name}} 并开始对话",chatWith:"与 {{name}} 对话",waking:"唤醒中",deploying:"部署中",draft:"草稿",checking:"检测中",chatUnsupported:"不支持对话",checkFailed:"检测失败",creatorFilter:"创建人筛选",agentType:"智能体类型",searchAgents:"搜索智能体",handoff:"接力",agentList:"{{type}}列表",noMatchingAgents:"没有匹配的智能体",adjustSearch:"请尝试调整搜索或筛选条件",noAgentType:"暂无 {{type}}",noGeneralAgents:"暂无通用智能体",createGeneralAgentDescription:"创建一个通用智能体,开始构建和对话",createAgentType:"创建{{type}}",createAgent:"创建智能体",loadingMore:"正在加载更多智能体",scrollForMore:"继续下滑加载更多",allLoaded:"已加载全部智能体",deleteDraftTitle:"删除草稿?",deleteDraftDescription:"删除后将无法恢复“{{name}}”。",deleteDraft:"删除草稿",loadGeneralAgents:"加载通用智能体",loadAgentType:"加载 {{type}}",compatibility:{checking:"正在请求 Runtime /list-apps,以确认该智能体是否支持 Studio 对话。",empty:"Runtime /list-apps 未返回可用的 Agent,暂时无法连接对话。",supported:"Runtime 支持 Studio 对话。",unknownError:"Runtime /list-apps 请求失败,未返回可识别的错误信息。"},sandboxStatus:{ready:"就绪",wakeable:"已休眠",creating:"创建中",starting:"启动中",initializing:"启动中",pending:"等待中",running:"运行中",failed:"异常",error:"异常",stopped:"已停止",expired:"已过期",deleting:"删除中",deleted:"已删除",unknown:"未知状态"},wakingHint:"正在唤醒智能体,可能需要一些时间。"},nxe={library:"技能库",skill:"技能",skills:"技能",skillSpace:"技能空间",sandboxNotConfigured:"管理员未配置 Dev Sandbox",adminNotConfigured:"管理员未配置",totalItems:"共 {{count}} 项",cannotLoadSpaces:"无法加载技能空间",someSpacesFailed:"部分技能空间加载失败",degradedRelationWarning:"部分关联异常,已恢复可读取技能",downloadZip:"下载 ZIP",optimize:"优化",closeSkillDetails:"关闭技能详情",skillId:"技能 ID",allFiles:"完整文件",loadingSkillContent:"正在读取技能内容…",noSkillContent:"该技能暂无 SKILL.md 内容",addSkill:"添加技能",localUpload:"本地上传",localUploadDescription:"选择 ZIP 文件,校验通过后上传到技能空间",autoCreate:"自动创建",autoCreateDescription:"选择模型和风格,通过对话生成技能",createSkill:"创建技能",optimizeNamed:"优化 {{name}}",deleteSkillConfirm:"确定删除整个 Skill“{{name}}”吗?此操作会影响所有引用它的空间。",deleteSpaceConfirm:"确定删除 Skill 空间“{{name}}”吗?请先确认空间中的技能已删除。",manageSpaceDescription:"管理空间中的技能并创建新的版本",backToSpaces:"返回技能空间列表",overview:"概览",skillCount:"技能数量",skillCountValue_one:"{{count}} 技能",skillCountValue_other:"{{count}} 技能",updatedAt:"更新时间",skillsInSpace:"{{name}}中的技能",searchSkills:"搜索技能",cannotLoadSkills:"无法加载技能",noMatchingSkills:"没有匹配的技能",noSkills:"暂无技能",tryAnotherName:"请尝试搜索其他名称",emptySkillsDescription:"本地上传 Skill,或自动创建",actions:"操作",spaceDetails:"技能空间详情",editSpace:"编辑空间",deleteSpace:"删除空间",searchSpaces:"搜索技能空间",spaceList:"技能空间列表",noMatchingSpaces:"没有匹配的技能空间",createSpace:"新建技能空间",newSpace:"新建空间",loadingMoreSpaces:"正在加载更多技能空间",scrollForMore:"继续下滑加载更多",allSpacesLoaded:"已加载全部技能空间",errors:{loadSpaces:"读取技能空间失败,请稍后重试",loadSkills:"读取技能失败,请稍后重试",loadSkillDetails:"读取技能详情失败,请稍后重试",deleteSkill:"删除 Skill 失败",deleteSpace:"删除 Skill 空间失败",downloadSkill:"下载 Skill 失败"},status:{active:"可用",available:"可用",creating:"创建中",disabled:"已停用",enabled:"已启用",failed:"异常",inactive:"未启用",pending:"等待中",published:"已发布",ready:"就绪",released:"已发布",running:"运行中",success:"正常",unavailable:"不可用",unreleased:"未发布",updating:"更新中",unknown:"未知"},sharedSpace:"企业共享空间",sharedDescription:"面向企业全员开放的技能,由管理员统一发布和维护",sharedVisibility:"全员可见",sharedPreparing:"正在准备共享空间",sharedLoadFailed:"共享空间加载失败",sharedEmpty:"暂无共享技能,管理员发布后会显示在这里",requestPublication:"申请公开",reviewSubmitting:"提交中…",reviewSubmitted:"已申请",reviewFailed:"申请公开失败",reviewStatusFailed:"审核状态加载失败",reviewRetry:"重新申请",reviewPending:"待审核",reviewApproving:"发布中",reviewApproved:"已公开",reviewReturned:"已退回",reviewHistory:"审核记录",skillDetailSections:"技能详情内容",versions:{title:"版本管理",refresh:"刷新",uploading:"上传中…",upload:"上传新版本",close:"关闭",hint:"新版本不会替换已公开版本,审核通过后才会公开;ZIP 中的技能名称需与原技能一致",loading:"正在加载版本…",loadFailed:"无法加载版本",filesFailed:"无法加载版本文件",uploadFailed:"上传新版本失败",submitFailed:"提交申请失败",retry:"重试",empty:"暂无版本",current:"当前版本",notSubmitted:"未申请公开",submitting:"提交中…",submit:"申请公开",processing:"版本状态:{{status}}",filesLoading:"正在加载文件…",filesEmpty:"暂无文件",history:"历史审核记录",shared:"已公开"},author:"作者",authorName:"作者:{{name}}"},ixe={library:"知识库",createBase:"新建知识库",editBase:"编辑知识库",invalidName:"名称必须以字母开头,且只能包含字母、数字和下划线。",nameHelp:"以字母开头,仅支持字母、数字和下划线,最多 48 个字符。",optionalDescription:"描述(可选)",descriptionOnly:"AgentKit 当前仅支持更新知识库描述。",previewWeb:"预览网页内容",addData:"添加数据",openOriginalWeb:"打开原网页",backToEdit:"返回修改",confirmAdd:"确认添加",source:"知识来源",image:"图片",documentFile:"文档文件",webPage:"在线网页",webUrl:"网页 URL",generatingWebPreview:"正在抓取网页并生成 Markdown 预览",selectFile:"选择知识文件",selectOrDropFile:"选择文件或拖拽到这里",selectedFile:"{{size}} · 点击可重新选择",imageFileHelp:"支持 PNG、JPG 和 JPEG,单个文件不超过 200 MB",documentFileHelp:"支持 PDF、PPTX、DOCX、XLSX 和 TXT,单个文件不超过 200 MB",uploadingFile:"正在上传文件并添加到知识库",optionalName:"名称(可选)",optionalType:"类型(可选)",generatePreview:"生成预览",uploadFile:"上传文件",editMetadata:"编辑知识 Metadata",knowledge:"知识",field:"字段",value:"值",backToList:"返回知识库列表",metadataJson:"元数据(JSON)",provider:"服务提供方",knowledgeId:"知识库 ID",project:"项目",creator:"创建者",data:"数据",deleteInvalidAssociation:"删除失效关联",noData:"这个知识库还没有数据",addFirstData:"添加第一项数据",format:"格式",size:"大小",searchData:"搜索数据",searchLibraryData:"搜索知识库数据",associationInvalid:"关联已失效",providerMissing:"底层 Provider 知识库已不存在",noMatchingData:"没有匹配的数据",loadingMoreData:"正在加载更多数据",retryLoading:"重试加载",details:"知识库详情",searchBases:"搜索知识库",someBasesFailed:"部分知识库暂时无法加载,已展示其余可用内容。",noMatchingBases:"没有匹配的知识库",noManagePermission:"您没有管理此知识库的权限",loadingMoreBases:"正在加载更多知识库",deleteBaseTitle:"删除知识库?",deleteBaseDescription:"将删除 {{name}} 的 AgentKit 关联;如果它由 Studio 创建,也会同时删除 Provider 资源。此操作无法撤销。",deleteDocumentTitle:"删除知识?",deleteDocumentDescription:"将从 Provider 知识库中删除 {{name}},此操作无法撤销。",preview:{processingTitle:"数据正在处理中",processingDetail:"知识库完成解析后即可预览,请稍后重新加载。",failedTitle:"数据解析失败",failedDetail:"请检查源文件或网页地址后重新添加,也可以重新加载最新状态。",noParsedTitle:"暂时没有可预览的解析内容",noParsedDetail:"此类文件会在知识库完成解析后显示文本、表格或页面图片。",noMediaTitle:"暂时没有可预览的媒体内容",noMediaDetail:"知识库尚未返回可访问的媒体预览,请稍后重新加载。",noDataTitle:"暂无可预览的数据内容",noDataDetail:"知识库尚未返回解析结果,请稍后重新加载。",attachmentError:"附件无法预览,请稍后重试。",imageAlt:"知识数据图片",audioUnsupported:"当前浏览器不支持音频预览。",videoUnsupported:"当前浏览器不支持视频预览。",namedPdf:"{{name}} PDF 预览",pdf:"PDF 预览",openPdf:"无法显示时,在新窗口打开 PDF",fileUnsupported:"当前格式暂不支持直接在线预览,已优先显示解析后的内容。",openOriginalFile:"打开原文件",loading:"正在加载数据预览",openOriginalHint:"您可以打开原网页查看来源内容。",chunk:"片段 {{index}}",loadingMore:"正在加载更多",loadMore:"加载更多"},errors:{fileTooLarge:"单个文件不能超过 200 MB",invalidImageType:"请选择 PNG、JPG 或 JPEG 图片",invalidDocumentType:"请选择 PDF、PPTX、DOCX、XLSX 或 TXT 文件",createBase:"创建知识库失败",updateBase:"更新知识库失败",metadataObject:"Metadata 必须是 JSON 对象",metadataFormat:"Metadata 格式错误",noWebPreview:"网页没有可预览的 Markdown 内容",addWeb:"添加网页失败",previewWeb:"生成网页预览失败",uploadFile:"上传文件失败",updateDocument:"更新知识失败",loadPreview:"加载数据预览失败",loadMoreBases:"加载更多知识库失败",loadBases:"加载知识库失败",loadMoreData:"加载更多数据失败",loadData:"加载数据失败",deleteBase:"删除知识库失败",deleteDocument:"删除知识失败"}},vQe={common:Mve,agentKitPromo:Lve,systemInfo:$ve,agentWorkspace:Fve,environmentCenter:Bve,deploymentSelect:Uve,deploymentError:Qve,studioBuildProgress:zve,cloudEnvironment:Vve,githubCicd:Hve,feishuDeployment:qve,deploymentResources:Wve,studioUpdate:Kve,projectPreview:Gve,workspace:Xve,resourceCollection:Yve,skillSourcePicker:Zve,composer:Jve,agentSelector:exe,myAgents:txe,skillCenter:nxe,knowledge:ixe},xQe=Object.freeze(Object.defineProperty({__proto__:null,agentKitPromo:Lve,agentSelector:exe,agentWorkspace:Fve,cloudEnvironment:Vve,common:Mve,composer:Jve,default:vQe,deploymentError:Qve,deploymentResources:Wve,deploymentSelect:Uve,environmentCenter:Bve,feishuDeployment:qve,githubCicd:Hve,knowledge:ixe,myAgents:txe,projectPreview:Gve,resourceCollection:Yve,skillCenter:nxe,skillSourcePicker:Zve,studioBuildProgress:zve,studioUpdate:Kve,systemInfo:$ve,workspace:Xve},Symbol.toStringTag,{value:"Module"})),rxe="用户管理",sxe="{{count}} 位成员",oxe="用户",axe="角色",lxe="账号状态",cxe="最近登录",uxe="操作",dxe="更改角色",fxe="关闭",hxe="保存角色",pxe="正在保存…",mxe="取消",gxe="返回",bxe="用户池",yxe="火山引擎 Identity",vxe="搜索姓名、邮箱或用户 ID",xxe="搜索",wxe="筛选角色",Oxe="全部角色",kxe="刷新",Sxe="正在读取用户…",Exe="更新于 {{time}}",Cxe="已将 {{name}} 设置为{{role}}",Txe="重试",Axe="你",_xe="初始超级管理员",jxe="初始超级管理员受保护,不能在此降级",Nxe="保存后,对方刷新 Studio 即可使用新的权限",Rxe="角色需要重新确认",Ixe="没有匹配的用户",Pxe="尝试其他关键词或角色",Dxe="用户登录或加入当前用户池后会显示在这里",Mxe="共 {{count}} 位用户",Lxe="上一页",$xe="下一页",Fxe="尚未登录",Bxe="未提供",Uxe={super_admin:"超级管理员",admin:"管理员",developer:"开发者",user:"普通用户"},Qxe={super_admin:"管理所有资源,并管理用户和分配角色",admin:"管理 Studio 资源",developer:"开发智能体并管理自己的资源",user:"使用智能体和个人功能"},zxe={EXTERNAL_PROVIDER:"正常",CONFIRMED:"正常",NORMAL:"正常",ENABLED:"正常",ACTIVE:"正常",UNCONFIRMED:"待验证",DISABLED:"已停用",FORBIDDEN:"已禁用",LOCKED:"已锁定",SUSPENDED:"已暂停",FORCE_CHANGE_PASSWORD:"需要修改密码"},Vxe={request_failed:"请求未完成,请刷新列表确认当前状态后重试",invalid_response:"用户服务返回异常,请刷新后重试",identity_unavailable:"暂时无法访问 Identity,请稍后重试或检查服务权限",identity_resource_missing:"用户或用户池已不存在,请刷新列表",super_administrator_required:"只有超级管理员可以管理用户",sign_in_required:"请登录后重试",user_not_in_pool:"当前账号不属于此用户池",user_disabled:"当前账号已停用",protected_administrator:"不能降低初始超级管理员的权限",cannot_demote_self:"不能降低自己的超级管理员权限",role_change_conflict:"角色已发生变化,请关闭弹窗并刷新列表后重试",cross_origin_request:"请在当前 Studio 页面内修改角色"},wQe={title:rxe,memberCount:sxe,user:oxe,role:axe,status:lxe,lastLogin:cxe,actions:uxe,changeRole:dxe,close:fxe,save:hxe,saving:pxe,cancel:mxe,back:gxe,pool:bxe,volcengineIdentity:yxe,searchPlaceholder:vxe,search:xxe,filterRole:wxe,allRoles:Oxe,refresh:kxe,loading:Sxe,updatedAt:Exe,saved:Cxe,retry:Txe,you:Axe,initialAdministrator:_xe,protectedExplanation:jxe,effectiveAfterRefresh:Nxe,roleConflict:Rxe,noUsers:Ixe,tryAnotherSearch:Pxe,poolEmpty:Dxe,resultCount:Mxe,previous:Lxe,next:$xe,neverLoggedIn:Fxe,unknown:Bxe,roles:Uxe,descriptions:Qxe,states:zxe,errors:Vxe},OQe=Object.freeze(Object.defineProperty({__proto__:null,actions:uxe,allRoles:Oxe,back:gxe,cancel:mxe,changeRole:dxe,close:fxe,default:wQe,descriptions:Qxe,effectiveAfterRefresh:Nxe,errors:Vxe,filterRole:wxe,initialAdministrator:_xe,lastLogin:cxe,loading:Sxe,memberCount:sxe,neverLoggedIn:Fxe,next:$xe,noUsers:Ixe,pool:bxe,poolEmpty:Dxe,previous:Lxe,protectedExplanation:jxe,refresh:kxe,resultCount:Mxe,retry:Txe,role:axe,roleConflict:Rxe,roles:Uxe,save:hxe,saved:Cxe,saving:pxe,search:xxe,searchPlaceholder:vxe,states:zxe,status:lxe,title:rxe,tryAnotherSearch:Pxe,unknown:Bxe,updatedAt:Exe,user:oxe,volcengineIdentity:yxe,you:Axe},Symbol.toStringTag,{value:"Module"})),Hxe="网站集成",qxe="将 AgentKit Runtime 以悬浮聊天窗口嵌入网站",Wxe="返回自动化列表",Kxe="添加网站",Gxe="正在加载 Runtime",Xxe="选择 Runtime",Yxe="网站域名",Zxe="例如 xxxx.com 或 localhost:5173",Jxe="正在生成",ewe="生成 Token",twe="已添加网站",nwe="{{count}} 个",iwe="{{count}} 个",rwe="正在加载网站集成",swe="还没有网站集成",owe="选择 Runtime 并输入网站域名即可生成 Token",awe="引入方法",lwe="将下面代码放到网页的 body 结束标签前",cwe="已复制",uwe="复制代码",dwe="添加网站后会在这里生成引入代码。",fwe="确定删除 {{domain}} 的网站集成吗?",hwe={load:"加载网站集成失败",create:"创建网站集成失败",delete:"删除网站集成失败",noConversationalAgent:"该 Runtime 暂未发现可对话的 Agent"},pwe={requestFailed:"请求失败 ({{status}})",greeting:"您好,有什么可以帮您?",sessionFailed:"无法建立对话会话",unauthorized:"当前网站未获得对话授权",conversationFailed:"对话请求失败,请稍后重试",open:"打开智能体对话",close:"关闭智能体对话",panelLabel:"智能体对话面板",assistant:"智能体助手",online:"在线对话"},kQe={title:Hxe,description:qxe,backToAutomations:Wxe,addWebsite:Kxe,loadingRuntime:Gxe,selectRuntime:Xxe,websiteDomain:Yxe,domainPlaceholder:Zxe,generating:Jxe,generateToken:ewe,addedWebsites:twe,websiteCount_one:nwe,websiteCount_other:iwe,loadingIntegrations:rwe,delete:"删除",emptyTitle:swe,emptyDescription:owe,embedMethod:awe,embedInstructions:lwe,copied:cwe,copyCode:uwe,embedHint:dwe,confirmDelete:fwe,errors:hwe,widget:pwe},SQe=Object.freeze(Object.defineProperty({__proto__:null,addWebsite:Kxe,addedWebsites:twe,backToAutomations:Wxe,confirmDelete:fwe,copied:cwe,copyCode:uwe,default:kQe,description:qxe,domainPlaceholder:Zxe,embedHint:dwe,embedInstructions:lwe,embedMethod:awe,emptyDescription:owe,emptyTitle:swe,errors:hwe,generateToken:ewe,generating:Jxe,loadingIntegrations:rwe,loadingRuntime:Gxe,selectRuntime:Xxe,title:Hxe,websiteCount_one:nwe,websiteCount_other:iwe,websiteDomain:Yxe,widget:pwe},Symbol.toStringTag,{value:"Module"})),mwe={types:{all:"全部类型",document:"文档",image:"图片",video:"视频"},previewArtifact:"预览 {{name}}",moreActions:"更多操作 {{name}}",actionMenu:"{{name}} 操作",download:"下载",downloading:"下载中",edit:"编辑信息",delete:"删除产物",previewFailed:"无法预览“{{name}}”:{{message}}",downloadStarted:"已开始下载 {{name}}",downloadFailed:"无法下载“{{name}}”:{{message}}",updated:"已更新 {{name}}",deleted:"已删除 {{name}}",deleteFailed:"无法删除“{{name}}”:{{message}}",typeFilter:"产物类型",searchAria:"搜索产物",searchPlaceholder:"搜索产物或会话",retry:"重试",close:"关闭",listAria:"产物列表",loadFailed:"产物加载失败",loadDetailFallback:"请检查存储配置后重试。",reload:"重新加载",noMatch:"没有找到匹配的产物",noArtifacts:"您还没有任何产物",searchHint:"请尝试搜索其他名称或切换类型",emptyHint:"聊天中生成的产物会自动显示在这里",columns:{name:"名称",source:"来源",updatedAt:"修改时间",actions:"操作"},loadingMore:"正在加载更多产物",unknownTime:"时间未知",preview:{close:"关闭预览",meta:"{{type}} / 版本 {{version}}",loading:"正在加载预览",alt:"{{name}} 预览",loadFailed:"预览加载失败,请稍后重试或下载查看",unsupported:"当前格式暂不支持在线预览,请下载查看",sourceAria:"产物来源",agent:"智能体",session:"会话",tool:"生成工具",createdAt:"生成时间",fileSize:"文件大小",tags:"标签",viewSession:"查看会话"},deleteDialog:{title:"删除产物?",description:"“{{name}}”将从产物库永久删除,聊天记录不会受到影响。",deleting:"删除中",confirm:"删除",close:"关闭删除确认框"},api:{withStatus:"{{message}}({{status}})",listFailed:"读取产物库失败",syncFailed:"同步聊天产物失败",updateFailed:"更新产物失败",deleteFailed:"删除产物失败",downloadFailed:"下载产物失败"}},gwe={unknownSource:"未知来源",unknownCreator:"未知创建者"},bwe={nameRequired:"请输入产物名称",tooManyTags:"标签最多 {{max}} 个",tagTooLong:"单个标签不能超过 {{max}} 个字符",title:"编辑产物信息",subtitle:"内容文件不会被修改",close:"关闭编辑框",name:"名称",description:"描述",descriptionPlaceholder:"补充用途、版本或使用说明",tags:"标签",tagsPlaceholder:"使用逗号分隔,最多 {{max}} 个",cancel:"取消",saving:"保存中",save:"保存"},ywe={change:{added:"新增",modified:"修改",deleted:"删除"},noChanges:"两个版本的源码没有差异",chooseFile:"从左侧选择文件以查看代码",compareTitle:"版本对比",workspaceTitle:"源码工作区",projectFallback:"Agent 项目",switchTheme:"切换源码主题",switchThemeTitle:"切换为{{theme}}主题",themes:{dark:"深色",light:"浅色"},closeWorkspace:"关闭源码工作区",close:"关闭",changedFiles:"变更文件",projectFiles:"项目文件",changes:"变更",files:"文件",openFiles:"打开的文件",noFileSelected:"未选择文件",comparisonDirection:"对比方向",before:"优化前",after:"优化后",loadingEditor:"正在加载编辑器…",changedFileCount_one:"{{count}} 个文件有变更",changedFileCount_other:"{{count}} 个文件有变更",fileCount_one:"{{count}} 个文件",fileCount_other:"{{count}} 个文件",lineCount_one:"{{count}} 行 · UTF-8",lineCount_other:"{{count}} 行 · UTF-8",viewSource:"查看源码",viewSourceAria:"查看和编辑项目源码"},vwe={nav:"搜索",selectAgent:"请选择 Agent",checkingCapabilities:"正在检测 Agent 能力",notMounted:"当前 Agent 未挂载{{label}}",sources:{session:"会话",web:"网络",knowledge:"知识库",memory:"长期记忆"},webDescription:"通过 web_search 工具检索",backendLocal:"本地",failed:"搜索失败:{{message}}",placeholder:{selectAgent:"请先选择 Agent",web:"在网络中检索",knowledge:"在 {{name}} 中检索",knowledgeFallback:"当前 Agent 的知识库",memory:"在 {{name}} 中检索",memoryFallback:"当前用户的长期记忆",session:"在当前 Agent 的会话中检索"},sourceTypeAria:"搜索类型:{{label}}",notSelected:"未选择",sourceType:"搜索类型",selectSource:"选择搜索类型",noAgentHint:"选择一个 Agent 后,即可检索会话、网络及其挂载的数据源。",loadingCapabilities:"正在读取当前 Agent 的检索能力…",sourceUnavailable:"当前 Agent 未挂载该数据源",instructions:{web:"输入关键词后回车或点击按钮,通过 web_search 工具检索。",knowledge:"输入问题,检索当前 Agent 挂载的知识库。",memory:"输入线索,检索当前用户跨会话保存的长期记忆。",session:"输入关键词后回车或点击按钮,搜索当前 Agent 的会话。"},noResults:"未找到匹配“{{query}}”的结果。",knowledgeFragment:"知识片段 {{index}}",memoryFragment:"记忆片段 {{index}}"},xwe={title:"开发者资源",sections:{documentation:{title:"相关链接",description:"查看开发文档与 AgentKit 常用入口"},bestPractices:{title:"最佳实践",description:"参考开发、调试与部署经验"},showcases:{title:"案例展示",description:"探索 AgentKit 应用案例"}},links:{veadkDocs:"VeADK 文档",cliDocs:"AgentKit CLI 文档",platformDocs:"AgentKit 平台文档",console:"AgentKit 控制台"},articles:{veadkDevelopment:{title:"使用 VeADK 开发并部署智能体",description:"使用 VeADK 构建 Agent,并部署至 AgentKit 智能体运行时。"},cliDevelopment:{title:"使用 AgentKit CLI 开发并部署智能体",description:"通过 AgentKit CLI 创建项目、调试 Agent,并完成部署。"},coverAlt:"{{title}}文章封面"},showcases:{researchAssistant:{title:"多智能体研究助手",description:"由多个专业 Agent 协同完成资料检索、分析和结论整理。"},multimodalAnalysis:{title:"多模态内容分析",description:"在统一会话中理解图片、文档和视频内容。"},customerService:{title:"智能客服工作台",description:"结合知识检索与工具调用处理复杂的客户服务任务。"},webSearch:{title:"联网搜索 Agent",description:"检索实时网页内容,并将信息整理为可追溯的回答。"},a2uiApp:{title:"A2UI 交互应用",description:"让 Agent 根据任务过程生成可交互的前端界面。"},previewAlt:"{{title}}界面预览"}},wwe={title:"资源库",untitledSession:"未命名会话",categoryAria:"资源库分类",regionAria:"区域",tabs:{skills:"技能库",knowledge:"知识库",artifacts:"产物"}},Owe={title:"管理 Agent",subtitle:"列出你有权管理的 AgentKit Runtime",mainAgentOnly:"仅显示主 Agent(控制面信息)。",deleteConfirm:'确定删除 Agent "{{name}}"?该 Runtime 将被永久删除。',regionFilterTitle:"按区域筛选",regionFilterAria:"区域筛选",regionAria:"区域",refresh:"刷新",loading:"加载中…",empty:"暂无你部署的 Agent。",connected:"已连接",connect:"连接到此 Agent",deleteRuntime:"删除该 Runtime",loadingDetail:"读取详情…",agentStructure:"Agent 结构",secretHidden:"敏感值已隐藏,点击显示",revealSecret:"显示 {{key}} 的值",fields:{model:"模型",description:"描述",status:"状态信息",project:"项目",version:"版本",resources:"资源",memory:"记忆",tool:"工具",knowledge:"知识",mcpToolset:"MCP 工具集",updatedAt:"更新时间"},resource:{memory:"内存 {{value}}MB",instances:"实例 {{min}}~{{max}}",concurrency:"并发 {{value}}"},environmentVariables:"环境变量",unnamed:"(未命名)"},kwe={mainAgent:"主 Agent",subAgent:"子 Agent {{index}}",itemCount_one:"{{count}} 项",itemCount_other:"{{count}} 项",info:"Agent 信息",infoAndTopology:"Agent 信息与拓扑",loadingInfo:"正在读取 Agent 信息…",unnamedAgent:"未命名 Agent",tools:"工具",toolList:"工具列表",studioTool:"Studio Tool",removeTool:"移除工具 {{name}}",remove:"移除",notConfigured:"未配置",addStudioTool:"添加 Studio 工具",addStudioToolHere:"在此对话中添加 Studio 工具",skills:"技能",skillList:"技能列表",previewUnsupported:"暂不支持预览",sessionEnvironment:"会话环境",environment:"环境",agentCanvas:"Agent 画布",topology:"结构拓扑",viewCanvasFullscreen:"全屏查看 Agent 画布",viewFullscreen:"全屏查看",executionCanvas:"Agent 执行画布",fullscreenExecutionCanvas:"全屏 Agent 执行画布",closeFullscreenCanvas:"关闭全屏画布",close:"关闭",capabilitiesSubtitle:"能力与协作拓扑",closeInfo:"关闭 Agent 信息",infoUnavailable:"暂时无法读取 Agent 信息。"},Swe={mountFailed:"挂载环境失败",closeDialog:"关闭环境弹窗",addTitle:"添加环境",description:"选择当前会话允许 Agent 使用的 Sandbox 环境",closeAdd:"关闭添加环境",searchAria:"搜索环境",searchPlaceholder:"搜索环境名称或能力",availableAria:"可用环境与工作区",loading:"正在读取可用环境…",noMatch:"没有匹配的环境或工作区",workspaces:"工作区",reuseAll:"复用工作区中的全部可用环境",availableEnvironmentCount_one:"{{count}} 个可用环境",availableEnvironmentCount_other:"{{count}} 个可用环境",selectWorkspace:"选择工作区 {{name}}",environments:"环境",includedByWorkspaces:"已由工作区 {{names}} 包含",nameSeparator:"、",selectEnvironment:"选择环境 {{name}}",selectedWorkspaceCount_one:"{{count}} 个工作区",selectedWorkspaceCount_other:"{{count}} 个工作区",coveredEnvironmentCount_one:"{{count}} 个环境",coveredEnvironmentCount_other:"{{count}} 个环境",selectionSummary:"已选择 {{workspaces}},覆盖 {{environments}}",cancel:"取消",mounting:"正在挂载…",confirm:"确认添加",mountedAria:"已挂载环境",environmentCount_one:"{{count}} 个环境",environmentCount_other:"{{count}} 个环境",removeWorkspace:"移除工作区 {{name}}",remove:"移除",removeEnvironment:"移除环境 {{name}}",add:"添加环境",addMore:"添加更多环境",addForSession:"为当前 Session 添加环境",loadingAvailable:"正在加载可用环境…",empty:"暂无可用的 AIO Sandbox 环境。"},Ewe={loading:{searching:"正在查找已有环境",creating:"环境初始化中",connecting:"正在连接已有环境"},initializationFailed:"AgentKit CLI 环境初始化失败,当前状态:{{status}}。",sessionExpired:"AgentKit CLI Session 不存在或已过期,请重试。",initializationTimeout:"AgentKit CLI 环境初始化超时,请稍后重试。",nonPersistent:"非持久化环境",recyclingHoursMinutes:"{{hours}} 小时 {{minutes}} 分钟后环境回收",recyclingMinutes:"{{minutes}} 分钟后环境回收",connectionError:`无法连接 Studio 服务,未收到服务端响应。
+原始错误:{{message}}`,unavailable:"连接不可用",requestFailed:"AgentKit CLI 请求失败",retry:"重试",terminalTitle:"AgentKit CLI 终端"},Cwe={labels:{coding:"智能编程",get_city_weather:"城市天气查询",get_location_weather:"位置天气查询",web_fetch:"网页内容获取",studio_write_artifact:"保存会话产物"},closeDialog:"关闭弹窗",title:"添加 Studio 工具",description:"由 Studio BFF 为 {{agentName}} 的当前会话执行,Runtime 无需预装",close:"关闭添加 Studio 工具",searchAria:"搜索 Studio 工具",searchPlaceholder:"搜索名称或工具标识",availableAria:"可用 Studio 工具",loading:"正在读取 Studio 工具…",noMatch:"没有匹配的 Studio 工具",remove:"移除",add:"添加"},Twe={artifactLibrary:mwe,resourceMetadata:gwe,artifactEdit:bwe,codeBrowser:ywe,search:vwe,developerResources:xwe,library:wwe,manageAgents:Owe,agentTopology:kwe,sessionEnvironment:Swe,agentKitCli:Ewe,studioTools:Cwe},EQe=Object.freeze(Object.defineProperty({__proto__:null,agentKitCli:Ewe,agentTopology:kwe,artifactEdit:bwe,artifactLibrary:mwe,codeBrowser:ywe,default:Twe,developerResources:xwe,library:wwe,manageAgents:Owe,resourceMetadata:gwe,search:vwe,sessionEnvironment:Swe,studioTools:Cwe},Symbol.toStringTag,{value:"Module"})),D9=["zh-CN","en-US"],sC="en-US",Awe="agentkit.studio.locale",CQe={"zh-CN":{dir:"ltr",nativeName:"简体中文"},"en-US":{dir:"ltr",nativeName:"English"}};function oC(e){if(!e)return null;const t=e.trim().replace(/_/g,"-").toLowerCase(),n=D9.find(i=>i.toLowerCase()===t);return n||(t==="zh"||t.startsWith("zh-")?"zh-CN":t==="en"||t.startsWith("en-")?"en-US":null)}function da(e,t){const n=(e==null?void 0:e.trim())??"";if(!n)return"";const i=new RegExp("\\p{Script=Han}","u").test(n);return t.toLowerCase().startsWith("zh")===i?n:""}function TQe(){if(typeof window>"u")return null;try{return oC(window.localStorage.getItem(Awe))}catch{return null}}function AQe(){if(typeof window>"u")return[];const e=window.navigator;return e?e.languages.length>0?e.languages:e.language?[e.language]:[]:[]}function _Qe(){const e=TQe();if(e)return e;for(const t of AQe()){const n=oC(t);if(n)return n}return sC}function jQe(e){if(!(typeof window>"u"))try{window.localStorage.setItem(Awe,e)}catch{}}function _we(e){typeof document>"u"||(document.documentElement.lang=e,document.documentElement.dir=CQe[e].dir)}const $n=e=>typeof e=="string",K1=()=>{let e,t;const n=new Promise((i,r)=>{e=i,t=r});return n.resolve=e,n.reject=t,n},FM=e=>e==null?"":String(e),NQe=(e,t,n)=>{e.forEach(i=>{t[i]&&(n[i]=t[i])})},RQe=/###/g,KW=e=>e&&e.includes("###")?e.replace(RQe,"."):e,GW=e=>!e||$n(e),wk=(e,t,n)=>{const i=$n(t)?t.split("."):t;let r=0;for(;r{const{obj:i,k:r}=wk(e,t,Object);if(i!==void 0||t.length===1){i[r]=n;return}let s=t[t.length-1],a=t.slice(0,t.length-1),l=wk(e,a,Object);for(;l.obj===void 0&&a.length;)s=`${a[a.length-1]}.${s}`,a=a.slice(0,a.length-1),l=wk(e,a,Object),l!=null&&l.obj&&typeof l.obj[`${l.k}.${s}`]<"u"&&(l.obj=void 0);l.obj[`${l.k}.${s}`]=n},IQe=(e,t,n,i)=>{const{obj:r,k:s}=wk(e,t,Object);r[s]=r[s]||[],r[s].push(n)},Pj=(e,t)=>{const{obj:n,k:i}=wk(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},PQe=(e,t,n)=>{const i=Pj(e,n);return i!==void 0?i:Pj(t,n)},jwe=(e,t,n)=>{for(const i in t)i!=="__proto__"&&i!=="constructor"&&(Object.prototype.hasOwnProperty.call(e,i)?$n(e[i])||e[i]instanceof String||$n(t[i])||t[i]instanceof String?n&&(e[i]=t[i]):jwe(e[i],t[i],n):e[i]=t[i]);return e},sh=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),DQe={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},MQe=e=>$n(e)?e.replace(/[&<>"'\/]/g,t=>DQe[t]):e;class LQe{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const n=this.regExpMap.get(t);if(n!==void 0)return n;const i=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,i),this.regExpQueue.push(t),i}}const $Qe=[" ",",","?","!",";"],FQe=new LQe(20),BQe=(e,t,n)=>{t=t||"",n=n||"";const i=$Qe.filter(a=>!t.includes(a)&&!n.includes(a));if(i.length===0)return!0;const r=FQe.getRegExp(`(${i.map(a=>a==="?"?"\\?":a).join("|")})`);let s=!r.test(e);if(!s){const a=e.indexOf(n);a>0&&!r.test(e.substring(0,a))&&(s=!0)}return s},x6=(e,t,n=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const i=t.split(n);let r=e;for(let s=0;se==null?void 0:e.replace(/_/g,"-"),UQe={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,i;(i=(n=console==null?void 0:console[e])==null?void 0:n.apply)==null||i.call(n,console,t)}};class Dj{constructor(t,n={}){this.init(t,n)}init(t,n={}){this.prefix=n.prefix||"i18next:",this.logger=t||UQe,this.options=n,this.debug=n.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,n,i,r){return r&&!this.debug?null:(t=t.map(s=>$n(s)?s.replace(/[\r\n\x00-\x1F\x7F]/g," "):s),$n(t[0])&&(t[0]=`${i}${this.prefix} ${t[0]}`),this.logger[n](t))}create(t){return new Dj(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new Dj(this.logger,t)}}var xf=new Dj;class hI{constructor(){this.observers={}}on(t,n){return t.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(n)||0;this.observers[i].set(n,r+1)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t].delete(n)}}once(t,n){const i=(...r)=>{n(...r),this.off(t,i)};return this.on(t,i),this}emit(t,...n){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([r,s])=>{for(let a=0;a{for(let a=0;a-1&&this.options.ns.splice(n,1)}getResource(t,n,i,r={}){var u,d;const s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,a=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let l;t.includes(".")?l=t.split("."):(l=[t,n],i&&(Array.isArray(i)?l.push(...i):$n(i)&&s?l.push(...i.split(s)):l.push(i)));const c=Pj(this.data,l);return!c&&!n&&!i&&t.includes(".")&&(t=l[0],n=l[1],i=l.slice(2).join(".")),c||!a||!$n(i)?c:x6((d=(u=this.data)==null?void 0:u[t])==null?void 0:d[n],i,s)}addResource(t,n,i,r,s={silent:!1}){const a=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator;let l=[t,n];i&&(l=l.concat(a?i.split(a):i)),t.includes(".")&&(l=t.split("."),r=n,n=l[1]),this.addNamespaces(n),XW(this.data,l,r),s.silent||this.emit("added",t,n,i,r)}addResources(t,n,i,r={silent:!1}){for(const s in i)($n(i[s])||Array.isArray(i[s]))&&this.addResource(t,n,s,i[s],{silent:!0});r.silent||this.emit("added",t,n,i)}addResourceBundle(t,n,i,r,s,a={silent:!1,skipCopy:!1}){let l=[t,n];t.includes(".")&&(l=t.split("."),r=i,i=n,n=l[1]),this.addNamespaces(n);let c=Pj(this.data,l)||{};a.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?jwe(c,i,s):c={...c,...i},XW(this.data,l,c),a.silent||this.emit("added",t,n,i)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var Nwe={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,i,r){return e.forEach(s=>{var a;t=((a=this.processors[s])==null?void 0:a.process(t,n,i,r))??t}),t}};const Rwe=Symbol("i18next/PATH_KEY");function QQe(){const e=[],t=Object.create(null);let n;return t.get=(i,r)=>{var s;return(s=n==null?void 0:n.revoke)==null||s.call(n),r===Rwe?e:(e.push(r),n=Proxy.revocable(i,t),n.proxy)},Proxy.revocable(Object.create(null),t).proxy}function Kb(e,t){const{[Rwe]:n}=e(QQe()),i=(t==null?void 0:t.keySeparator)??".",r=(t==null?void 0:t.nsSeparator)??":",s=(t==null?void 0:t.enableSelector)==="strict";if(n.length>1&&r){const a=t==null?void 0:t.ns,l=s?Array.isArray(a)?a:a?[a]:null:Array.isArray(a)?a:null;if(l&&(s?l:l.length>1?l.slice(1):[]).includes(n[0]))return`${n[0]}${r}${n.slice(1).join(i)}`}return n.join(i)}const BM=e=>!$n(e)&&typeof e!="boolean"&&typeof e!="number";class Mj extends hI{constructor(t,n={}){super(),NQe(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=xf.create("translator"),this.checkedLoadedFor={}}changeLanguage(t){t&&(this.language=t)}exists(t,n={interpolation:{}}){const i={...n};if(t==null)return!1;const r=this.resolve(t,i);if((r==null?void 0:r.res)===void 0)return!1;const s=BM(r.res);return!(i.returnObjects===!1&&s)}extractFromKey(t,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let s=n.ns||this.options.defaultNS||[];const a=i&&t.includes(i),l=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!BQe(t,i,r);if(a&&!l){const c=t.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:t,namespaces:$n(s)?[s]:s};const u=t.split(i);(i!==r||i===r&&this.options.ns.includes(u[0]))&&(s=u.shift()),t=u.join(r)}return{key:t,namespaces:$n(s)?[s]:s}}translate(t,n,i){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),t==null)return"";typeof t=="function"&&(t=Kb(t,{...this.options,...r})),Array.isArray(t)||(t=[String(t)]),t=t.map(N=>typeof N=="function"?Kb(N,{...this.options,...r}):String(N));const s=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:l,namespaces:c}=this.extractFromKey(t[t.length-1],r),u=c[c.length-1];let d=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;d===void 0&&(d=":");const f=r.lng||this.language,h=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((f==null?void 0:f.toLowerCase())==="cimode")return h?s?{res:`${u}${d}${l}`,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(r)}:`${u}${d}${l}`:s?{res:l,usedKey:l,exactUsedKey:l,usedLng:f,usedNS:u,usedParams:this.getUsedParamsDetails(r)}:l;const m=this.resolve(t,r);let g=m==null?void 0:m.res;const b=(m==null?void 0:m.usedKey)||l,v=(m==null?void 0:m.exactUsedKey)||l,y=["[object Number]","[object Function]","[object RegExp]"],w=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,x=!this.i18nFormat||this.i18nFormat.handleAsObject,O=r.count!==void 0&&!$n(r.count),S=Mj.hasDefaultValue(r),k=O?this.pluralResolver.getSuffix(f,r.count,r):"",C=r.ordinal&&O?this.pluralResolver.getSuffix(f,r.count,{ordinal:!1}):"",E=O&&!r.ordinal&&r.count===0,R=E&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${k}`]||r[`defaultValue${C}`]||r.defaultValue;let A=g;x&&!g&&S&&(A=R);const j=BM(A),T=Object.prototype.toString.apply(A);if(x&&A&&j&&!y.includes(T)&&!($n(w)&&Array.isArray(A))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const N=this.options.returnedObjectHandler?this.options.returnedObjectHandler(b,A,{...r,ns:c}):`key '${l} (${this.language})' returned an object instead of string.`;return s?(m.res=N,m.usedParams=this.getUsedParamsDetails(r),m):N}if(a){const N=Array.isArray(A),_=N?[]:{},D=N?v:b;for(const M in A)if(Object.prototype.hasOwnProperty.call(A,M)){const P=`${D}${a}${M}`;S&&!g?_[M]=this.translate(P,{...r,defaultValue:BM(R)?R[M]:void 0,joinArrays:!1,ns:c}):_[M]=this.translate(P,{...r,joinArrays:!1,ns:c}),_[M]===P&&(_[M]=A[M])}g=_}}else if(x&&$n(w)&&Array.isArray(g))g=g.join(w),g&&(g=this.extendTranslation(g,t,r,i));else{let N=!1,_=!1;!this.isValidLookup(g)&&S&&(N=!0,g=R),this.isValidLookup(g)||(_=!0,g=l);const M=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&_?void 0:g,P=S&&R!==g&&this.options.updateMissing;if(_||N||P){if(this.logger.log(P?"updateKey":"missingKey",f,u,O&&!P?`${l}${this.pluralResolver.getSuffix(f,r.count,r)}`:l,P?R:g),a){const z=this.resolve(l,{...r,keySeparator:!1});z&&z.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let L=[];const B=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&B&&B[0])for(let z=0;z{var H;const q=S&&F!==g?F:M;this.options.missingKeyHandler?this.options.missingKeyHandler(z,u,K,q,P,r):(H=this.backendConnector)!=null&&H.saveMissing&&this.backendConnector.saveMissing(z,u,K,q,P,r),this.emit("missingKey",z,u,K,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&O?L.forEach(z=>{const K=this.pluralResolver.getSuffixes(z,r);E&&r[`defaultValue${this.options.pluralSeparator}zero`]&&!K.includes(`${this.options.pluralSeparator}zero`)&&K.push(`${this.options.pluralSeparator}zero`),K.forEach(F=>{I([z],l+F,r[`defaultValue${F}`]||R)})}):I(L,l,R))}g=this.extendTranslation(g,t,r,m,i),_&&g===l&&this.options.appendNamespaceToMissingKey&&(g=`${u}${d}${l}`),(_||N)&&this.options.parseMissingKeyHandler&&(g=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${u}${d}${l}`:l,N?g:void 0,r))}return s?(m.res=g,m.usedParams=this.getUsedParamsDetails(r),m):g}extendTranslation(t,n,i,r,s){var c,u;if((c=this.i18nFormat)!=null&&c.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const d=$n(t)&&(((u=i==null?void 0:i.interpolation)==null?void 0:u.skipOnVariables)!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let f;if(d){const m=t.match(this.interpolator.nestingRegexp);f=m&&m.length}let h=i.replace&&!$n(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(h={...this.options.interpolation.defaultVariables,...h}),t=this.interpolator.interpolate(t,h,i.lng||this.language||r.usedLng,i),d){const m=t.match(this.interpolator.nestingRegexp),g=m&&m.length;f(s==null?void 0:s[0])===m[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${m[0]} in key: ${n[0]}`),null):this.translate(...m,n),i)),i.interpolation&&this.interpolator.reset()}const a=i.postProcess||this.options.postProcess,l=$n(a)?[a]:a;return t!=null&&(l!=null&&l.length)&&i.applyPostProcessor!==!1&&(t=Nwe.handle(l,t,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),t}resolve(t,n={}){let i,r,s,a,l;return $n(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(c=>typeof c=="function"?Kb(c,{...this.options,...n}):c)),t.forEach(c=>{if(this.isValidLookup(i))return;const u=this.extractFromKey(c,n),d=u.key;r=d;let f=u.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const h=n.count!==void 0&&!$n(n.count),m=h&&!n.ordinal&&n.count===0,g=n.context!==void 0&&($n(n.context)||typeof n.context=="number")&&n.context!=="",b=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(v=>{var y,w;this.isValidLookup(i)||(l=v,!this.checkedLoadedFor[`${b[0]}-${v}`]&&((y=this.utils)!=null&&y.hasLoadedNamespace)&&!((w=this.utils)!=null&&w.hasLoadedNamespace(l))&&(this.checkedLoadedFor[`${b[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${b.join(", ")}" won't get resolved as namespace "${l}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),b.forEach(x=>{var k;if(this.isValidLookup(i))return;a=x;const O=[d];if((k=this.i18nFormat)!=null&&k.addLookupKeys)this.i18nFormat.addLookupKeys(O,d,x,v,n);else{let C;h&&(C=this.pluralResolver.getSuffix(x,n.count,n));const E=`${this.options.pluralSeparator}zero`,R=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(h&&(n.ordinal&&C.startsWith(R)&&O.push(d+C.replace(R,this.options.pluralSeparator)),O.push(d+C),m&&O.push(d+E)),g){const A=`${d}${this.options.contextSeparator||"_"}${n.context}`;O.push(A),h&&(n.ordinal&&C.startsWith(R)&&O.push(A+C.replace(R,this.options.pluralSeparator)),O.push(A+C),m&&O.push(A+E))}}let S;for(;S=O.pop();)this.isValidLookup(i)||(s=S,i=this.getResource(x,v,S,n))}))})}),{res:i,usedKey:r,exactUsedKey:s,usedLng:a,usedNS:l}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,i,r={}){var s;return(s=this.i18nFormat)!=null&&s.getResource?this.i18nFormat.getResource(t,n,i,r):this.resourceStore.getResource(t,n,i,r)}getUsedParamsDetails(t={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=t.replace&&!$n(t.replace);let r=i?t.replace:t;if(i&&typeof t.count<"u"&&(r={...r,count:t.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const s of n)delete r[s]}return r}static hasDefaultValue(t){const n="defaultValue";for(const i in t)if(Object.prototype.hasOwnProperty.call(t,i)&&i.startsWith(n)&&t[i]!==void 0)return!0;return!1}}class ZW{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=xf.create("languageUtils"),this.resolveHierarchyCache={}}clearCache(){this.resolveHierarchyCache={}}getScriptPartFromCode(t){if(t=kS(t),!t||!t.includes("-"))return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=kS(t),!t||!t.includes("-"))return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if($n(t)&&t.includes("-")){let n;try{n=Intl.getCanonicalLocales(t)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(t)}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(i=>{if(n)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&t.forEach(i=>{if(n)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return n=r;const s=this.getLanguagePartFromCode(i);if(this.isSupportedCode(s))return n=s;n=this.options.supportedLngs.find(a=>a===s?!0:!a.includes("-")&&!s.includes("-")?!1:!!(a.includes("-")&&!s.includes("-")&&a.slice(0,a.indexOf("-"))===s||a.startsWith(s)&&s.length>1))}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),$n(t)&&(t=[t]),Array.isArray(t))return t;if(!n)return t.default||[];let i=t[n];return i||(i=t[this.getScriptPartFromCode(n)]),i||(i=t[this.formatLanguageCode(n)]),i||(i=t[this.getLanguagePartFromCode(n)]),i||(i=t.default),i||[]}toResolveHierarchy(t,n){const i=this.options.fallbackLng,r=Array.isArray(i)?i.join("|"):i;r!==this._cachedFallbackLng&&(this.resolveHierarchyCache={},this._cachedFallbackLng=r);const s=n===void 0||n===!1||$n(n),a=n===void 0&&typeof this.options.fallbackLng=="function",l=$n(t)&&s&&!a;let c=null;if(l){let h;n===void 0?h="undefined":n===!1?h="boolean:false":h=`string:${n}`,c=`${t.length}:${t}|${h}`}if(c!==null){const h=this.resolveHierarchyCache[c];if(h!==void 0)return h.slice()}const u=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],t),d=[],f=h=>{h&&(this.isSupportedCode(h)?d.push(h):this.logger.warn(`rejecting language code not found in supportedLngs: ${h}`))};return $n(t)&&(t.includes("-")||t.includes("_"))?(this.options.load!=="languageOnly"&&f(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&f(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&f(this.getLanguagePartFromCode(t))):$n(t)&&f(this.formatLanguageCode(t)),u.forEach(h=>{d.includes(h)||f(this.formatLanguageCode(h))}),c!==null?(this.resolveHierarchyCache[c]=d,d.slice()):d}}const JW={zero:0,one:1,two:2,few:3,many:4,other:5},eK={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class zQe{constructor(t,n={}){this.languageUtils=t,this.options=n,this.logger=xf.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,n={}){const i=kS(t==="dev"?"en":t),r=n.ordinal?"ordinal":"cardinal",s=JSON.stringify({cleanedCode:i,type:r});if(s in this.pluralRulesCache)return this.pluralRulesCache[s];let a;try{a=new Intl.PluralRules(i,{type:r})}catch{if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),eK;if(!t.match(/-|_/))return eK;const c=this.languageUtils.getLanguagePartFromCode(t);a=this.getRule(c,n)}return this.pluralRulesCache[s]=a,a}needsPlural(t,n={}){let i=this.getRule(t,n);return i||(i=this.getRule("dev",n)),(i==null?void 0:i.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,n,i={}){return this.getSuffixes(t,i).map(r=>`${n}${r}`)}getSuffixes(t,n={}){let i=this.getRule(t,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((r,s)=>JW[r]-JW[s]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(t,n,i={}){const r=this.getRule(t,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",n,i))}}const tK=(e,t,n,i=".",r=!0)=>{let s=PQe(e,t,n);return!s&&r&&$n(n)&&(s=x6(e,n,i),s===void 0&&(s=x6(t,n,i))),s},nK=e=>e.replace(/\$/g,"$$$$");class iK{constructor(t={}){var n;this.logger=xf.create("interpolator"),this.options=t,this.format=((n=t==null?void 0:t.interpolation)==null?void 0:n.format)||(i=>i),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:r,prefix:s,prefixEscaped:a,suffix:l,suffixEscaped:c,formatSeparator:u,unescapeSuffix:d,unescapePrefix:f,nestingPrefix:h,nestingPrefixEscaped:m,nestingSuffix:g,nestingSuffixEscaped:b,nestingOptionsSeparator:v,maxReplaces:y,alwaysFormat:w}=t.interpolation;this.escape=n!==void 0?n:MQe,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=s?sh(s):a||"{{",this.suffix=l?sh(l):c||"}}",this.formatSeparator=u||",",this.unescapePrefix=d?"":f?sh(f):"-",this.unescapeSuffix=this.unescapePrefix?"":d?sh(d):"",this.nestingPrefix=h?sh(h):m||sh("$t("),this.nestingSuffix=g?sh(g):b||sh(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=y||1e3,this.alwaysFormat=w!==void 0?w:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(n,i)=>(n==null?void 0:n.source)===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,n,i,r){var m;let s,a,l;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},u=g=>{if(!g.includes(this.formatSeparator)){const w=tK(n,c,g,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(w,void 0,i,{...r,...n,interpolationkey:g}):w}const b=g.split(this.formatSeparator),v=b.shift().trim(),y=b.join(this.formatSeparator).trim();return this.format(tK(n,c,v,this.options.keySeparator,this.options.ignoreJSONStructure),y,i,{...r,...n,interpolationkey:v})};this.resetRegExp(),!this.escapeValue&&typeof t=="string"&&/\$t\([^)]*\{[^}]*\{\{/.test(t)&&this.logger.warn("nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.");const d=(r==null?void 0:r.missingInterpolationHandler)||this.options.missingInterpolationHandler,f=((m=r==null?void 0:r.interpolation)==null?void 0:m.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:g=>g},{regex:this.regexp,safeValue:g=>this.escapeValue?this.escape(g):g}].forEach(g=>{for(l=0;s=g.regex.exec(t);){const b=s[1].trim();if(a=u(b),a===void 0)if(typeof d=="function"){const y=d(t,s,r);a=$n(y)?y:""}else if(r&&Object.prototype.hasOwnProperty.call(r,b))a="";else if(f){a=s[0];continue}else this.logger.warn(`missed to pass in variable ${b} for interpolating ${t}`),a="";else!$n(a)&&!this.useRawValueToEscape&&(a=FM(a));const v=g.safeValue(a);if(t=t.replace(s[0],nK(v)),f?(g.regex.lastIndex+=v.length,g.regex.lastIndex-=s[0].length):g.regex.lastIndex=0,l++,l>=this.maxReplaces)break}}),t}nest(t,n,i={}){let r,s,a;const l=(c,u)=>{const d=this.nestingOptionsSeparator;if(!c.includes(d))return c;const f=c.split(new RegExp(`${sh(d)}[ ]*{`));let h=`{${f[1]}`;c=f[0],h=this.interpolate(h,a);const m=h.match(/'/g),g=h.match(/"/g);(((m==null?void 0:m.length)??0)%2===0&&!g||((g==null?void 0:g.length)??0)%2!==0)&&(h=h.replace(/'/g,'"'));try{a=JSON.parse(h),u&&(a={...u,...a})}catch(b){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,b),`${c}${d}${h}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,c};for(;r=this.nestingRegexp.exec(t);){let c=[];a={...i},a=a.replace&&!$n(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const u=/{.*}/s.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(u!==-1&&(c=r[1].slice(u).split(this.formatSeparator).map(d=>d.trim()).filter(Boolean),r[1]=r[1].slice(0,u)),s=n(l.call(this,r[1].trim(),a),a),s&&r[0]===t&&!$n(s))return s;$n(s)||(s=FM(s)),s||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${t}`),s=""),c.length&&(s=c.reduce((d,f)=>this.format(d,f,i.lng,{...i,interpolationkey:r[1].trim()}),s.trim())),t=t.replace(r[0],nK(FM(s))),this.regexp.lastIndex=0}return t}}const VQe=e=>{let t=e.toLowerCase().trim();const n={};if(e.includes("(")){const i=e.split("(");t=i[0].toLowerCase().trim();const r=i[1].slice(0,-1);t==="currency"&&!r.includes(":")?n.currency||(n.currency=r.trim()):t==="relativetime"&&!r.includes(":")?n.range||(n.range=r.trim()):r.split(";").forEach(a=>{if(a){const[l,...c]=a.split(":"),u=c.join(":").trim().replace(/^'+|'+$/g,""),d=l.trim();n[d]||(n[d]=u),u==="false"&&(n[d]=!1),u==="true"&&(n[d]=!0),isNaN(u)||(n[d]=parseInt(u,10))}})}return{formatName:t,formatOptions:n}},rK=e=>{const t={};return(n,i,r)=>{let s=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(s={...s,[r.interpolationkey]:void 0});const a=i+JSON.stringify(s);let l=t[a];return l||(l=e(kS(i),r),t[a]=l),l(n)}},HQe=e=>(t,n,i)=>e(kS(n),i)(t);class qQe{constructor(t={}){this.logger=xf.create("formatter"),this.options=t,this.init(t)}init(t,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?rK:HQe;this.formats={number:i((r,s)=>{const a=new Intl.NumberFormat(r,{...s});return l=>a.format(l)}),currency:i((r,s)=>{const a=new Intl.NumberFormat(r,{...s,style:"currency"});return l=>a.format(l)}),datetime:i((r,s)=>{const a=new Intl.DateTimeFormat(r,{...s});return l=>a.format(l)}),relativetime:i((r,s)=>{const a=new Intl.RelativeTimeFormat(r,{...s});return l=>a.format(l,s.range||"day")}),list:i((r,s)=>{const a=new Intl.ListFormat(r,{...s});return l=>a.format(l)})}}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=rK(n)}format(t,n,i,r={}){if(!n||t==null)return t;const s=n.split(this.formatSeparator),a=[];for(let c=0;c-1&&!u.includes(")")&&c+1{var h;const{formatName:d,formatOptions:f}=VQe(u);if(this.formats[d]){let m=c;try{const g=((h=r==null?void 0:r.formatParams)==null?void 0:h[r.interpolationkey])||{},b=g.locale||g.lng||r.locale||r.lng||i;m=this.formats[d](c,b,{...f,...r,...g})}catch(g){this.logger.warn(g)}return m}else this.logger.warn(`there was no format function for ${d}`);return c},t)}}const WQe=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class KQe extends hI{constructor(t,n,i,r={}){var s,a;super(),this.backend=t,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=xf.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],(a=(s=this.backend)==null?void 0:s.init)==null||a.call(s,i,r.backend,r)}queueLoad(t,n,i,r){const s={},a={},l={},c={};return t.forEach(u=>{let d=!0;n.forEach(f=>{const h=`${u}|${f}`;!i.reload&&this.store.hasResourceBundle(u,f)?this.state[h]=2:this.state[h]<0||(this.state[h]===1?a[h]===void 0&&(a[h]=!0):(this.state[h]=1,d=!1,a[h]===void 0&&(a[h]=!0),s[h]===void 0&&(s[h]=!0),c[f]===void 0&&(c[f]=!0)))}),d||(l[u]=!0)}),(Object.keys(s).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(s),pending:Object.keys(a),toLoadLanguages:Object.keys(l),toLoadNamespaces:Object.keys(c)}}loaded(t,n,i){const r=t.split("|"),s=r[0],a=r[1];n&&this.emit("failedLoading",s,a,n),!n&&i&&this.store.addResourceBundle(s,a,i,void 0,void 0,{skipCopy:!0}),this.state[t]=n?-1:2,n&&i&&(this.state[t]=0);const l={};this.queue.forEach(c=>{IQe(c.loaded,[s],a),WQe(c,t),n&&c.errors.push(n),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(u=>{l[u]||(l[u]={});const d=c.loaded[u];d.length&&d.forEach(f=>{l[u][f]===void 0&&(l[u][f]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",l),this.queue=this.queue.filter(c=>!c.done)}read(t,n,i,r=0,s=this.retryTimeout,a){if(!t.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:i,tried:r,wait:s,callback:a});return}this.readingCalls++;const l=(u,d)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(u&&d&&r{this.read(t,n,i,r+1,s*2,a)},s);return}a(u,d)},c=this.backend[i].bind(this.backend);if(c.length===2){try{const u=c(t,n);u&&typeof u.then=="function"?u.then(d=>l(null,d)).catch(l):l(null,u)}catch(u){l(u)}return}return c(t,n,l)}prepareLoading(t,n,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();$n(t)&&(t=this.languageUtils.toResolveHierarchy(t)),$n(n)&&(n=[n]);const s=this.queueLoad(t,n,i,r);if(!s.toLoad.length)return s.pending.length||r(),null;s.toLoad.forEach(a=>{this.loadOne(a)})}load(t,n,i){this.prepareLoading(t,n,{},i)}reload(t,n,i){this.prepareLoading(t,n,{reload:!0},i)}loadOne(t,n=""){const i=t.split("|"),r=i[0],s=i[1];this.read(r,s,"read",void 0,void 0,(a,l)=>{a&&this.logger.warn(`${n}loading namespace ${s} for language ${r} failed`,a),!a&&l&&this.logger.log(`${n}loaded namespace ${s} for language ${r}`,l),this.loaded(t,a,l)})}saveMissing(t,n,i,r,s,a={},l=()=>{}){var c,u,d,f,h;if((u=(c=this.services)==null?void 0:c.utils)!=null&&u.hasLoadedNamespace&&!((f=(d=this.services)==null?void 0:d.utils)!=null&&f.hasLoadedNamespace(n))){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if((h=this.backend)!=null&&h.create){const m={...a,isUpdate:s},g=this.backend.create.bind(this.backend);if(g.length<6)try{let b;g.length===5?b=g(t,n,i,r,m):b=g(t,n,i,r),b&&typeof b.then=="function"?b.then(v=>l(null,v)).catch(l):l(null,b)}catch(b){l(b)}else g(t,n,i,r,l,m)}!t||!t[0]||this.store.addResource(t[0],n,i,r)}}}const UM=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),$n(e[1])&&(t.defaultValue=e[1]),$n(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(i=>{t[i]=n[i]})}return t},interpolation:{escapeValue:!0,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),sK=e=>($n(e.ns)&&(e.ns=[e.ns]),$n(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),$n(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes("cimode")&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),n2=()=>{},GQe=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class Ok extends hI{constructor(t={},n){if(super(),this.options=sK(t),this.services={},this.logger=xf,this.modules={external:[]},GQe(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(t={},n){this.isInitializing=!0,typeof t=="function"&&(n=t,t={}),t.defaultNS==null&&t.ns&&($n(t.ns)?t.defaultNS=t.ns:t.ns.includes("translation")||(t.defaultNS=t.ns[0]));const i=UM();this.options={...i,...this.options,...sK(t)},this.options.interpolation={...i.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=i.overloadTranslationOptionHandler);const r=u=>u?typeof u=="function"?new u:u:null;if(!this.options.isClone){this.modules.logger?xf.init(r(this.modules.logger),this.options):xf.init(null,this.options);let u;this.modules.formatter?u=this.modules.formatter:u=qQe;const d=new ZW(this.options);this.store=new YW(this.options.resources,this.options);const f=this.services;f.logger=xf,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new zQe(d,{prepend:this.options.pluralSeparator}),u&&(f.formatter=r(u),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new iK(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new KQe(r(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(h,...m)=>{this.emit(h,...m)}),this.modules.languageDetector&&(f.languageDetector=r(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=r(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new Mj(this.services,this.options),this.translator.on("*",(h,...m)=>{this.emit(h,...m)}),this.modules.external.forEach(h=>{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,n||(n=n2),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const u=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);u.length>0&&u[0]!=="dev"&&(this.options.lng=u[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(u=>{this[u]=(...d)=>this.store[u](...d)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(u=>{this[u]=(...d)=>(this.store[u](...d),this)});const l=K1(),c=()=>{const u=(d,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(f),n(d,f)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return u(null,this.t.bind(this));this.changeLanguage(this.options.lng,u)};return this.options.resources||!this.options.initAsync?c():setTimeout(c,0),l}loadResources(t,n=n2){var s,a;let i=n;const r=$n(t)?t:this.language;if(typeof t=="function"&&(i=t),!this.options.resources||this.options.partialBundledLanguages){if((r==null?void 0:r.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const l=[],c=u=>{if(!u||u==="cimode")return;this.services.languageUtils.toResolveHierarchy(u).forEach(f=>{f!=="cimode"&&(l.includes(f)||l.push(f))})};r?c(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(d=>c(d)),(a=(s=this.options.preload)==null?void 0:s.forEach)==null||a.call(s,u=>c(u)),this.services.backendConnector.load(l,this.options.ns,u=>{!u&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(u)})}else i(null)}reloadResources(t,n,i){const r=K1();return typeof t=="function"&&(i=t,t=void 0),typeof n=="function"&&(i=n,n=void 0),t||(t=this.languages),n||(n=this.options.ns),i||(i=n2),this.services.backendConnector.reload(t,n,s=>{r.resolve(),i(s)}),r}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&Nwe.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!["cimode","dev"].includes(t)){for(let n=0;n{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},s=(l,c)=>{c?this.isLanguageChangingTo===t&&(r(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve((...u)=>this.t(...u)),n&&n(l,(...u)=>this.t(...u))},a=l=>{var d,f;!t&&!l&&this.services.languageDetector&&(l=[]);const c=$n(l)?l:l&&l[0],u=this.store.hasLanguageSomeTranslations(c)?c:this.services.languageUtils.getBestMatchFromCodes($n(l)?[l]:l);u&&(this.language||r(u),this.translator.language||this.translator.changeLanguage(u),(f=(d=this.services.languageDetector)==null?void 0:d.cacheUserLanguage)==null||f.call(d,u)),this.loadResources(u,h=>{s(h,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t),i}getFixedT(t,n,i,r){const s=r==null?void 0:r.scopeNs,a=(l,c,...u)=>{let d;typeof c!="object"?d=this.options.overloadTranslationOptionHandler([l,c].concat(u)):d={...c},d.lng=d.lng||a.lng,d.lngs=d.lngs||a.lngs;const f=d.ns!==void 0&&d.ns!==null;d.ns=d.ns||a.ns,d.keyPrefix!==""&&(d.keyPrefix=d.keyPrefix||i||a.keyPrefix);const h={...this.options,...d};Array.isArray(s)&&!f&&(h.ns=s),typeof d.keyPrefix=="function"&&(d.keyPrefix=Kb(d.keyPrefix,h));const m=this.options.keySeparator||".";let g;return d.keyPrefix&&Array.isArray(l)?g=l.map(b=>(typeof b=="function"&&(b=Kb(b,h)),`${d.keyPrefix}${m}${b}`)):(typeof l=="function"&&(l=Kb(l,h)),g=d.keyPrefix?`${d.keyPrefix}${m}${l}`:l),this.t(g,d)};return $n(t)?a.lng=t:a.lngs=t,a.ns=n,a.keyPrefix=i,a}t(...t){var n;return(n=this.translator)==null?void 0:n.translate(...t)}exists(...t){var n;return(n=this.translator)==null?void 0:n.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,s=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const a=(l,c)=>{const u=this.services.backendConnector.state[`${l}|${c}`];return u===-1||u===0||u===2};if(n.precheck){const l=n.precheck(this,a);if(l!==void 0)return l}return!!(this.hasResourceBundle(i,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(i,t)&&(!r||a(s,t)))}loadNamespaces(t,n){const i=K1();return this.options.ns?($n(t)&&(t=[t]),t.forEach(r=>{this.options.ns.includes(r)||this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),n&&n(r)}),i):(n&&n(),Promise.resolve())}loadLanguages(t,n){const i=K1();$n(t)&&(t=[t]);const r=this.options.preload||[],s=t.filter(a=>!r.includes(a)&&this.services.languageUtils.isSupportedCode(a));return s.length?(this.options.preload=r.concat(s),this.loadResources(a=>{i.resolve(),n&&n(a)}),i):(n&&n(),Promise.resolve())}dir(t){var r,s;if(t||(t=this.resolvedLanguage||(((r=this.languages)==null?void 0:r.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{const a=new Intl.Locale(t);if(a&&a.getTextInfo){const l=a.getTextInfo();if(l&&l.direction)return l.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=((s=this.services)==null?void 0:s.languageUtils)||new ZW(UM());return t.toLowerCase().indexOf("-latn")>1?"ltr":n.includes(i.getLanguagePartFromCode(t))||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},n){const i=new Ok(t,n);return i.createInstance=Ok.createInstance,i}cloneInstance(t={},n=n2){const i=t.forkResourceStore;i&&delete t.forkResourceStore;const r={...this.options,...t,isClone:!0},s=new Ok(r);if((t.debug!==void 0||t.prefix!==void 0)&&(s.logger=s.logger.clone(t)),["store","services","language"].forEach(l=>{s[l]=this[l]}),s.services={...this.services},s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},i){const l=Object.keys(this.store.data).reduce((c,u)=>(c[u]={...this.store.data[u]},c[u]=Object.keys(c[u]).reduce((d,f)=>(d[f]={...c[u][f]},d),c[u]),c),{});s.store=new YW(l,r),s.services.resourceStore=s.store}if(t.interpolation){const c={...UM().interpolation,...this.options.interpolation,...t.interpolation},u={...r,interpolation:c};s.services.interpolator=new iK(u)}return s.translator=new Mj(s.services,r),s.translator.on("*",(l,...c)=>{s.emit(l,...c)}),s.init(r,n),s.translator.options=r,s.translator.backendConnector.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Dl=Ok.createInstance();Dl.createInstance;Dl.dir;Dl.init;Dl.loadResources;Dl.reloadResources;Dl.use;Dl.changeLanguage;Dl.getFixedT;Dl.t;Dl.exists;Dl.setDefaultNamespace;Dl.hasLoadedNamespace;Dl.loadNamespaces;Dl.loadLanguages;var Iwe={exports:{}},di={};/**
* @license React
* react.production.js
*
@@ -59,7 +59,7 @@ Studio:{{studioUrl}}
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var L9=Symbol.for("react.transitional.element"),YQe=Symbol.for("react.portal"),ZQe=Symbol.for("react.fragment"),JQe=Symbol.for("react.strict_mode"),eze=Symbol.for("react.profiler"),tze=Symbol.for("react.consumer"),nze=Symbol.for("react.context"),ize=Symbol.for("react.forward_ref"),rze=Symbol.for("react.suspense"),sze=Symbol.for("react.memo"),Dwe=Symbol.for("react.lazy"),oze=Symbol.for("react.activity"),aK=Symbol.iterator;function aze(e){return e===null||typeof e!="object"?null:(e=aK&&e[aK]||e["@@iterator"],typeof e=="function"?e:null)}var Mwe={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Lwe=Object.assign,$we={};function jw(e,t,n){this.props=e,this.context=t,this.refs=$we,this.updater=n||Mwe}jw.prototype.isReactComponent={};jw.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};jw.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Fwe(){}Fwe.prototype=jw.prototype;function $9(e,t,n){this.props=e,this.context=t,this.refs=$we,this.updater=n||Mwe}var F9=$9.prototype=new Fwe;F9.constructor=$9;Lwe(F9,jw.prototype);F9.isPureReactComponent=!0;var lK=Array.isArray;function w6(){}var ms={H:null,A:null,T:null,S:null},Bwe=Object.prototype.hasOwnProperty;function B9(e,t,n){var i=n.ref;return{$$typeof:L9,type:e,key:t,ref:i!==void 0?i:null,props:n}}function lze(e,t){return B9(e.type,t,e.props)}function U9(e){return typeof e=="object"&&e!==null&&e.$$typeof===L9}function cze(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var cK=/\/+/g;function QM(e,t){return typeof e=="object"&&e!==null&&e.key!=null?cze(""+e.key):t.toString(36)}function uze(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(w6,w6):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function iv(e,t,n,i,r){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var a=!1;if(e===null)a=!0;else switch(s){case"bigint":case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case L9:case YQe:a=!0;break;case Dwe:return a=e._init,iv(a(e._payload),t,n,i,r)}}if(a)return r=r(e),a=i===""?"."+QM(e,0):i,lK(r)?(n="",a!=null&&(n=a.replace(cK,"$&/")+"/"),iv(r,t,n,"",function(u){return u})):r!=null&&(U9(r)&&(r=lze(r,n+(r.key==null||e&&e.key===r.key?"":(""+r.key).replace(cK,"$&/")+"/")+a)),t.push(r)),1;a=0;var l=i===""?".":i+":";if(lK(e))for(var c=0;c<]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function dK(e){const t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(hze[n[1]]||e.charAt(e.length-2)==="/")&&(t.voidElement=!0),t.name.startsWith("!--"))){const s=e.indexOf("-->");return{type:"comment",comment:s!==-1?e.slice(4,s):""}}const i=new RegExp(pze);let r=null;for(;r=i.exec(e),r!==null;)if(r[0].trim())if(r[1]){const s=r[1].trim();let a=[s,null];const l=s.indexOf("=");l>-1&&(a=[s.slice(0,l),s.slice(l+1)]),t.attrs[a[0]]=a[1],i.lastIndex--}else r[2]&&(t.attrs[r[2]]=r[3].trim().substring(1,r[3].length-1));return t}const r2=/|<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,mze=/<\/?([^\s]+?)[/\s>]/,gze=/^\s*$/,bze=/^(script|style)$/i,zO="\0",yze=Object.create(null);function Uwe(e){e.forEach(function(t){if(t.type==="text"){t.content=t.content.split(zO).join("<");return}if(t.type==="comment"){t.comment=t.comment.split(zO).join("<");return}for(const n in t.attrs){const i=t.attrs[n];typeof i=="string"&&i.indexOf(zO)>-1&&(t.attrs[n]=i.split(zO).join("<"))}t.children.length&&Uwe(t.children)})}function vze(e,t){const n=t&&t.components||yze,i=t&&t.allowedTags;let r=!1;if(i){const g=typeof i=="function"?i:function(w){return i.indexOf(w)>-1};let b="",v=0;r2.lastIndex=0;let y;for(;y=r2.exec(e);){const w=y[0];b+=e.slice(v,y.index);const x=w.match(mze);w.startsWith("",e}}function wze(e){return e.reduce(function(t,n){return t+Qwe("",n)},"")}var Oze={parse:vze,stringify:wze};const p_=(e,t,n,i)=>{var s,a,l,c;const r=[n,{code:t,...i||{}}];if((a=(s=e==null?void 0:e.services)==null?void 0:s.logger)!=null&&a.forward)return e.services.logger.forward(r,"warn","react-i18next::",!0);cc(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),(c=(l=e==null?void 0:e.services)==null?void 0:l.logger)!=null&&c.warn?e.services.logger.warn(...r):console!=null&&console.warn&&console.warn(...r)},fK={},Gv=(e,t,n,i)=>{cc(n)&&fK[n]||(cc(n)&&(fK[n]=new Date),p_(e,t,n,i))},zwe=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},O6=(e,t,n)=>{e.loadNamespaces(t,zwe(e,n))},hK=(e,t,n,i)=>{if(cc(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return O6(e,n,i);n.forEach(r=>{e.options.ns.indexOf(r)<0&&e.options.ns.push(r)}),e.loadLanguages(t,zwe(e,i))},kze=(e,t,n={})=>!t.languages||!t.languages.length?(Gv(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(i,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,e))return!1}}),cc=e=>typeof e=="string",Ph=e=>typeof e=="object"&&e!==null,Sze=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Eze={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},Cze=e=>Eze[e],Vwe=e=>e.replace(Sze,Cze);let k6={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Vwe,transDefaultProps:void 0};const Tze=(e={})=>{k6={...k6,...e}},Q9=()=>k6;let Hwe;const Aze=e=>{Hwe=e},z9=()=>Hwe,m_=(e,t)=>{var i;if(!e)return!1;const n=((i=e.props)==null?void 0:i.children)??e.children;return t?n.length>0:!!n},VO=e=>{var n,i;if(!e)return[];const t=((n=e.props)==null?void 0:n.children)??e.children;return(i=e.props)!=null&&i.i18nIsDynamicList?fm(t):t},_ze=e=>Array.isArray(e)&&e.every(p.isValidElement),fm=e=>Array.isArray(e)?e:[e],jze=(e,t)=>{const n={...t};return n.props={...t.props,...e.props},n},Nze=e=>{const t={};if(!e)return t;const n=i=>{fm(i).forEach(s=>{cc(s)||(m_(s)?n(VO(s)):Ph(s)&&!p.isValidElement(s)&&Object.assign(t,s))})};return n(e),t},S6=(e,t,n,i)=>{if(!e)return"";let r="";const s=fm(e),a=t!=null&&t.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return s.forEach((l,c)=>{if(cc(l)){r+=`${l}`;return}if(p.isValidElement(l)){const{props:u,type:d}=l,f=Object.keys(u).length,h=a.indexOf(d)>-1,m=u.children;if(!m&&h&&!f){r+=`<${d}/>`;return}if(!m&&(!h||f)||u.i18nIsDynamicList){r+=`<${c}>${c}>`;return}if(h&&f<=1){const b=cc(m)?m:S6(m,t,n,i);r+=`<${d}>${b}${d}>`;return}const g=S6(m,t,n,i);r+=`<${c}>${g}${c}>`;return}if(l===null){p_(n,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:i});return}if(Ph(l)){const{format:u,...d}=l,f=Object.keys(d);if(f.length===1){const h=u?`${f[0]}, ${u}`:f[0];r+=`{{${h}}}`;return}p_(n,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:i,child:l});return}p_(n,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:i,child:l})}),r},Rze=(e,t,n,i,r,s,a)=>{if(n==="")return[];const l=r.transKeepBasicHtmlNodesFor||[],c=n&&new RegExp(l.map(x=>`<${x}`).join("|")).test(n);if(!e&&!t&&!c&&!a)return[n];const u=t??{},d=x=>{fm(x).forEach(S=>{cc(S)||(m_(S)?d(VO(S)):Ph(S)&&!p.isValidElement(S)&&Object.assign(u,S))})};d(e);const f=Object.keys(u),h=x=>/^\d+$/.test(x)||l.indexOf(x)>-1||f.indexOf(x)>-1,m=Oze.parse(`<0>${n}0>`,{allowedTags:h}),g={...u,...s},b=(x,O,S)=>{var E;const k=VO(x),C=y(k,O.children,S);return _ze(k)&&C.length===0||(E=x.props)!=null&&E.i18nIsDynamicList?k:C},v=(x,O,S,k,C)=>{x.dummy?(x.children=O,S.push(p.cloneElement(x,{key:k},C?void 0:O))):S.push(...p.Children.map([x],E=>{var A;if(E.type===p.Fragment||((A=E.props)==null?void 0:A.i18nIsDynamicList)!==void 0){const j={key:k};return E&&E.props&&Object.keys(E.props).forEach(T=>{T==="children"||T==="i18nIsDynamicList"||(j[T]=E.props[T])}),p.createElement(E.type,j,C?null:O)}const R={key:k};return E&&E.props&&Object.keys(E.props).forEach(j=>{j==="ref"||j==="children"||(R[j]=E.props[j])}),p.cloneElement(E,R,C?null:O)}))},y=(x,O,S)=>{const k=fm(x),C=fm(O),E={};return C.reduce((R,A,j)=>{var N,_;const T=((_=(N=A.children)==null?void 0:N[0])==null?void 0:_.content)&&i.services.interpolator.interpolate(A.children[0].content,g,i.language);if(A.type==="tag"){let D=k[parseInt(A.name,10)];!D&&t&&(D=t[A.name]),S.length===1&&!D&&(D=S[0][A.name]),D||(D={});const M={...A.attrs};a&&Object.keys(M).forEach(K=>{const F=M[K];cc(F)&&(M[K]=Vwe(F))});const P=Object.keys(M).length!==0?jze({props:M},D):D,L=p.isValidElement(P),B=L&&m_(A,!0)&&!A.voidElement,I=c&&Ph(P)&&P.dummy&&!L,z=Ph(t)&&Object.hasOwnProperty.call(t,A.name);if(cc(P)){const K=i.services.interpolator.interpolate(P,g,i.language);R.push(K)}else if(m_(P)||B){const K=b(P,A,S);v(P,K,R,j)}else if(I){const K=y(k,A.children,S);v(P,K,R,j)}else if(Number.isNaN(parseFloat(A.name)))if(z){const K=b(P,A,S);v(P,K,R,j,A.voidElement)}else if(r.transSupportBasicHtmlNodes&&l.indexOf(A.name)>-1)if(A.voidElement)R.push(p.createElement(A.name,{key:`${A.name}-${j}`}));else{const K=E[A.name]||0;E[A.name]=K+1;let F,q=0;for(let ne=0;ne`);else{const K=y(k,A.children,S);R.push(`<${A.name}>${K}${A.name}>`)}else if(Ph(P)&&!L){const K=A.children[0]?T:null;K&&R.push(K)}else v(P,T,R,j,A.children.length!==1||!T)}else if(A.type==="text"){const D=r.transWrapTextNodes,M=typeof r.unescape=="function"?r.unescape:Q9().unescape,P=a?M(i.services.interpolator.interpolate(A.content,g,i.language)):i.services.interpolator.interpolate(A.content,g,i.language);D?R.push(p.createElement(D,{key:`${A.name}-${j}`},P)):R.push(P)}return R},[])},w=y([{dummy:!0,children:e||[]}],m,fm(e||[]));return VO(w[0])},qwe=(e,t,n)=>{const i=e.key||t,r=p.cloneElement(e,{key:i});if(!r.props||!r.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return r;function s(){return p.createElement(p.Fragment,null,r)}return p.createElement(s,{key:i})},Ize=(e,t)=>e.map((n,i)=>qwe(n,i,t)),Pze=(e,t)=>{const n={};return Object.keys(e).forEach(i=>{Object.assign(n,{[i]:qwe(e[i],i,t)})}),n},Dze=(e,t,n,i)=>e?Array.isArray(e)?Ize(e,t):Ph(e)?Pze(e,t):(Gv(n,"TRANS_INVALID_COMPONENTS",' "components" prop expects an object or array',{i18nKey:i}),null):null,Mze=e=>!Ph(e)||Array.isArray(e)?!1:Object.keys(e).reduce((t,n)=>t&&Number.isNaN(Number.parseFloat(n)),!0);function Lze({children:e,count:t,parent:n,i18nKey:i,context:r,tOptions:s={},values:a,defaults:l,components:c,ns:u,i18n:d,t:f,shouldUnescape:h,...m}){var I,z,K,F,q,H;const g=d||z9();if(!g)return Gv(g,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.",{i18nKey:i}),e;const b=f||g.t.bind(g)||(X=>X),v={...Q9(),...(I=g.options)==null?void 0:I.react};let y=u||b.ns||((z=g.options)==null?void 0:z.defaultNS);y=cc(y)?[y]:y||["translation"];const{transDefaultProps:w}=v,x=w!=null&&w.tOptions?{...w.tOptions,...s}:s,O=h??(w==null?void 0:w.shouldUnescape),S=w!=null&&w.values?{...w.values,...a}:a,k=w!=null&&w.components?{...w.components,...c}:c,C=S6(e,v,g,i),E=l||(x==null?void 0:x.defaultValue)||C||v.transEmptyNodeValue||(typeof i=="function"?Kb(i):i),{hashTransKey:R}=v,A=i||(R?R(C||E):C||E);(F=(K=g.options)==null?void 0:K.interpolation)!=null&&F.defaultVariables?a=S&&Object.keys(S).length>0?{...S,...g.options.interpolation.defaultVariables}:{...g.options.interpolation.defaultVariables}:a=S;const j=Nze(e);j&&typeof j.count=="number"&&t===void 0&&(t=j.count);const T=a||t!==void 0&&!((H=(q=g.options)==null?void 0:q.interpolation)!=null&&H.alwaysFormat)||!e?x.interpolation:{interpolation:{...x.interpolation,prefix:"#$?",suffix:"?$#"}},N={...x,context:r||x.context,count:t,...a,...T,defaultValue:E,ns:y};let _=A?b(A,N):E;_===A&&E&&(_=E);const D=Dze(k,_,g,i);let M=D||e,P=null;Mze(D)&&(P=D,M=e);const L=Rze(M,P,_,g,v,N,O),B=n??v.defaultTransParent;return B?p.createElement(B,m,L):L}const $ze={type:"3rdParty",init(e){Tze(e.options.react),Aze(e)}},Wwe=p.createContext();class Fze{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}function Rx({children:e,count:t,parent:n,i18nKey:i,context:r,tOptions:s={},values:a,defaults:l,components:c,ns:u,i18n:d,t:f,shouldUnescape:h,...m}){var w;const{i18n:g,defaultNS:b}=p.useContext(Wwe)||{},v=d||g||z9(),y=f||(v==null?void 0:v.t.bind(v));return Lze({children:e,count:t,parent:n,i18nKey:i,context:r,tOptions:s,values:a,defaults:l,components:c,ns:u||(y==null?void 0:y.ns)||b||((w=v==null?void 0:v.options)==null?void 0:w.defaultNS),i18n:v,t:f,shouldUnescape:h,...m})}var Kwe={exports:{}},Gwe={};/**
+ */var M9=Symbol.for("react.transitional.element"),XQe=Symbol.for("react.portal"),YQe=Symbol.for("react.fragment"),ZQe=Symbol.for("react.strict_mode"),JQe=Symbol.for("react.profiler"),eze=Symbol.for("react.consumer"),tze=Symbol.for("react.context"),nze=Symbol.for("react.forward_ref"),ize=Symbol.for("react.suspense"),rze=Symbol.for("react.memo"),Pwe=Symbol.for("react.lazy"),sze=Symbol.for("react.activity"),oK=Symbol.iterator;function oze(e){return e===null||typeof e!="object"?null:(e=oK&&e[oK]||e["@@iterator"],typeof e=="function"?e:null)}var Dwe={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Mwe=Object.assign,Lwe={};function jw(e,t,n){this.props=e,this.context=t,this.refs=Lwe,this.updater=n||Dwe}jw.prototype.isReactComponent={};jw.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};jw.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function $we(){}$we.prototype=jw.prototype;function L9(e,t,n){this.props=e,this.context=t,this.refs=Lwe,this.updater=n||Dwe}var $9=L9.prototype=new $we;$9.constructor=L9;Mwe($9,jw.prototype);$9.isPureReactComponent=!0;var aK=Array.isArray;function w6(){}var ms={H:null,A:null,T:null,S:null},Fwe=Object.prototype.hasOwnProperty;function F9(e,t,n){var i=n.ref;return{$$typeof:M9,type:e,key:t,ref:i!==void 0?i:null,props:n}}function aze(e,t){return F9(e.type,t,e.props)}function B9(e){return typeof e=="object"&&e!==null&&e.$$typeof===M9}function lze(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(n){return t[n]})}var lK=/\/+/g;function QM(e,t){return typeof e=="object"&&e!==null&&e.key!=null?lze(""+e.key):t.toString(36)}function cze(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch(typeof e.status=="string"?e.then(w6,w6):(e.status="pending",e.then(function(t){e.status==="pending"&&(e.status="fulfilled",e.value=t)},function(t){e.status==="pending"&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}function iv(e,t,n,i,r){var s=typeof e;(s==="undefined"||s==="boolean")&&(e=null);var a=!1;if(e===null)a=!0;else switch(s){case"bigint":case"string":case"number":a=!0;break;case"object":switch(e.$$typeof){case M9:case XQe:a=!0;break;case Pwe:return a=e._init,iv(a(e._payload),t,n,i,r)}}if(a)return r=r(e),a=i===""?"."+QM(e,0):i,aK(r)?(n="",a!=null&&(n=a.replace(lK,"$&/")+"/"),iv(r,t,n,"",function(u){return u})):r!=null&&(B9(r)&&(r=aze(r,n+(r.key==null||e&&e.key===r.key?"":(""+r.key).replace(lK,"$&/")+"/")+a)),t.push(r)),1;a=0;var l=i===""?".":i+":";if(aK(e))for(var c=0;c<]+?)[\s/>]|([^\s=]+)=\s?("[^"]*"|'[^']*')/g;function uK(e){const t={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(fze[n[1]]||e.charAt(e.length-2)==="/")&&(t.voidElement=!0),t.name.startsWith("!--"))){const s=e.indexOf("-->");return{type:"comment",comment:s!==-1?e.slice(4,s):""}}const i=new RegExp(hze);let r=null;for(;r=i.exec(e),r!==null;)if(r[0].trim())if(r[1]){const s=r[1].trim();let a=[s,null];const l=s.indexOf("=");l>-1&&(a=[s.slice(0,l),s.slice(l+1)]),t.attrs[a[0]]=a[1],i.lastIndex--}else r[2]&&(t.attrs[r[2]]=r[3].trim().substring(1,r[3].length-1));return t}const r2=/|<[a-zA-Z0-9\-!/](?:"[^"]*"|'[^']*'|[^'">])*>/g,pze=/<\/?([^\s]+?)[/\s>]/,mze=/^\s*$/,gze=/^(script|style)$/i,zO="\0",bze=Object.create(null);function Bwe(e){e.forEach(function(t){if(t.type==="text"){t.content=t.content.split(zO).join("<");return}if(t.type==="comment"){t.comment=t.comment.split(zO).join("<");return}for(const n in t.attrs){const i=t.attrs[n];typeof i=="string"&&i.indexOf(zO)>-1&&(t.attrs[n]=i.split(zO).join("<"))}t.children.length&&Bwe(t.children)})}function yze(e,t){const n=t&&t.components||bze,i=t&&t.allowedTags;let r=!1;if(i){const g=typeof i=="function"?i:function(w){return i.indexOf(w)>-1};let b="",v=0;r2.lastIndex=0;let y;for(;y=r2.exec(e);){const w=y[0];b+=e.slice(v,y.index);const x=w.match(pze);w.startsWith("",e}}function xze(e){return e.reduce(function(t,n){return t+Uwe("",n)},"")}var wze={parse:yze,stringify:xze};const p_=(e,t,n,i)=>{var s,a,l,c;const r=[n,{code:t,...i||{}}];if((a=(s=e==null?void 0:e.services)==null?void 0:s.logger)!=null&&a.forward)return e.services.logger.forward(r,"warn","react-i18next::",!0);cc(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),(c=(l=e==null?void 0:e.services)==null?void 0:l.logger)!=null&&c.warn?e.services.logger.warn(...r):console!=null&&console.warn&&console.warn(...r)},dK={},Gv=(e,t,n,i)=>{cc(n)&&dK[n]||(cc(n)&&(dK[n]=new Date),p_(e,t,n,i))},Qwe=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},O6=(e,t,n)=>{e.loadNamespaces(t,Qwe(e,n))},fK=(e,t,n,i)=>{if(cc(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return O6(e,n,i);n.forEach(r=>{e.options.ns.indexOf(r)<0&&e.options.ns.push(r)}),e.loadLanguages(t,Qwe(e,i))},Oze=(e,t,n={})=>!t.languages||!t.languages.length?(Gv(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(i,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,e))return!1}}),cc=e=>typeof e=="string",Ph=e=>typeof e=="object"&&e!==null,kze=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Sze={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},Eze=e=>Sze[e],zwe=e=>e.replace(kze,Eze);let k6={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:zwe,transDefaultProps:void 0};const Cze=(e={})=>{k6={...k6,...e}},U9=()=>k6;let Vwe;const Tze=e=>{Vwe=e},Q9=()=>Vwe,m_=(e,t)=>{var i;if(!e)return!1;const n=((i=e.props)==null?void 0:i.children)??e.children;return t?n.length>0:!!n},VO=e=>{var n,i;if(!e)return[];const t=((n=e.props)==null?void 0:n.children)??e.children;return(i=e.props)!=null&&i.i18nIsDynamicList?fm(t):t},Aze=e=>Array.isArray(e)&&e.every(p.isValidElement),fm=e=>Array.isArray(e)?e:[e],_ze=(e,t)=>{const n={...t};return n.props={...t.props,...e.props},n},jze=e=>{const t={};if(!e)return t;const n=i=>{fm(i).forEach(s=>{cc(s)||(m_(s)?n(VO(s)):Ph(s)&&!p.isValidElement(s)&&Object.assign(t,s))})};return n(e),t},S6=(e,t,n,i)=>{if(!e)return"";let r="";const s=fm(e),a=t!=null&&t.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return s.forEach((l,c)=>{if(cc(l)){r+=`${l}`;return}if(p.isValidElement(l)){const{props:u,type:d}=l,f=Object.keys(u).length,h=a.indexOf(d)>-1,m=u.children;if(!m&&h&&!f){r+=`<${d}/>`;return}if(!m&&(!h||f)||u.i18nIsDynamicList){r+=`<${c}>${c}>`;return}if(h&&f<=1){const b=cc(m)?m:S6(m,t,n,i);r+=`<${d}>${b}${d}>`;return}const g=S6(m,t,n,i);r+=`<${c}>${g}${c}>`;return}if(l===null){p_(n,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:i});return}if(Ph(l)){const{format:u,...d}=l,f=Object.keys(d);if(f.length===1){const h=u?`${f[0]}, ${u}`:f[0];r+=`{{${h}}}`;return}p_(n,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:i,child:l});return}p_(n,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:i,child:l})}),r},Nze=(e,t,n,i,r,s,a)=>{if(n==="")return[];const l=r.transKeepBasicHtmlNodesFor||[],c=n&&new RegExp(l.map(x=>`<${x}`).join("|")).test(n);if(!e&&!t&&!c&&!a)return[n];const u=t??{},d=x=>{fm(x).forEach(S=>{cc(S)||(m_(S)?d(VO(S)):Ph(S)&&!p.isValidElement(S)&&Object.assign(u,S))})};d(e);const f=Object.keys(u),h=x=>/^\d+$/.test(x)||l.indexOf(x)>-1||f.indexOf(x)>-1,m=wze.parse(`<0>${n}0>`,{allowedTags:h}),g={...u,...s},b=(x,O,S)=>{var E;const k=VO(x),C=y(k,O.children,S);return Aze(k)&&C.length===0||(E=x.props)!=null&&E.i18nIsDynamicList?k:C},v=(x,O,S,k,C)=>{x.dummy?(x.children=O,S.push(p.cloneElement(x,{key:k},C?void 0:O))):S.push(...p.Children.map([x],E=>{var A;if(E.type===p.Fragment||((A=E.props)==null?void 0:A.i18nIsDynamicList)!==void 0){const j={key:k};return E&&E.props&&Object.keys(E.props).forEach(T=>{T==="children"||T==="i18nIsDynamicList"||(j[T]=E.props[T])}),p.createElement(E.type,j,C?null:O)}const R={key:k};return E&&E.props&&Object.keys(E.props).forEach(j=>{j==="ref"||j==="children"||(R[j]=E.props[j])}),p.cloneElement(E,R,C?null:O)}))},y=(x,O,S)=>{const k=fm(x),C=fm(O),E={};return C.reduce((R,A,j)=>{var N,_;const T=((_=(N=A.children)==null?void 0:N[0])==null?void 0:_.content)&&i.services.interpolator.interpolate(A.children[0].content,g,i.language);if(A.type==="tag"){let D=k[parseInt(A.name,10)];!D&&t&&(D=t[A.name]),S.length===1&&!D&&(D=S[0][A.name]),D||(D={});const M={...A.attrs};a&&Object.keys(M).forEach(K=>{const F=M[K];cc(F)&&(M[K]=zwe(F))});const P=Object.keys(M).length!==0?_ze({props:M},D):D,L=p.isValidElement(P),B=L&&m_(A,!0)&&!A.voidElement,I=c&&Ph(P)&&P.dummy&&!L,z=Ph(t)&&Object.hasOwnProperty.call(t,A.name);if(cc(P)){const K=i.services.interpolator.interpolate(P,g,i.language);R.push(K)}else if(m_(P)||B){const K=b(P,A,S);v(P,K,R,j)}else if(I){const K=y(k,A.children,S);v(P,K,R,j)}else if(Number.isNaN(parseFloat(A.name)))if(z){const K=b(P,A,S);v(P,K,R,j,A.voidElement)}else if(r.transSupportBasicHtmlNodes&&l.indexOf(A.name)>-1)if(A.voidElement)R.push(p.createElement(A.name,{key:`${A.name}-${j}`}));else{const K=E[A.name]||0;E[A.name]=K+1;let F,q=0;for(let ne=0;ne`);else{const K=y(k,A.children,S);R.push(`<${A.name}>${K}${A.name}>`)}else if(Ph(P)&&!L){const K=A.children[0]?T:null;K&&R.push(K)}else v(P,T,R,j,A.children.length!==1||!T)}else if(A.type==="text"){const D=r.transWrapTextNodes,M=typeof r.unescape=="function"?r.unescape:U9().unescape,P=a?M(i.services.interpolator.interpolate(A.content,g,i.language)):i.services.interpolator.interpolate(A.content,g,i.language);D?R.push(p.createElement(D,{key:`${A.name}-${j}`},P)):R.push(P)}return R},[])},w=y([{dummy:!0,children:e||[]}],m,fm(e||[]));return VO(w[0])},Hwe=(e,t,n)=>{const i=e.key||t,r=p.cloneElement(e,{key:i});if(!r.props||!r.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return r;function s(){return p.createElement(p.Fragment,null,r)}return p.createElement(s,{key:i})},Rze=(e,t)=>e.map((n,i)=>Hwe(n,i,t)),Ize=(e,t)=>{const n={};return Object.keys(e).forEach(i=>{Object.assign(n,{[i]:Hwe(e[i],i,t)})}),n},Pze=(e,t,n,i)=>e?Array.isArray(e)?Rze(e,t):Ph(e)?Ize(e,t):(Gv(n,"TRANS_INVALID_COMPONENTS",' "components" prop expects an object or array',{i18nKey:i}),null):null,Dze=e=>!Ph(e)||Array.isArray(e)?!1:Object.keys(e).reduce((t,n)=>t&&Number.isNaN(Number.parseFloat(n)),!0);function Mze({children:e,count:t,parent:n,i18nKey:i,context:r,tOptions:s={},values:a,defaults:l,components:c,ns:u,i18n:d,t:f,shouldUnescape:h,...m}){var I,z,K,F,q,H;const g=d||Q9();if(!g)return Gv(g,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.",{i18nKey:i}),e;const b=f||g.t.bind(g)||(X=>X),v={...U9(),...(I=g.options)==null?void 0:I.react};let y=u||b.ns||((z=g.options)==null?void 0:z.defaultNS);y=cc(y)?[y]:y||["translation"];const{transDefaultProps:w}=v,x=w!=null&&w.tOptions?{...w.tOptions,...s}:s,O=h??(w==null?void 0:w.shouldUnescape),S=w!=null&&w.values?{...w.values,...a}:a,k=w!=null&&w.components?{...w.components,...c}:c,C=S6(e,v,g,i),E=l||(x==null?void 0:x.defaultValue)||C||v.transEmptyNodeValue||(typeof i=="function"?Kb(i):i),{hashTransKey:R}=v,A=i||(R?R(C||E):C||E);(F=(K=g.options)==null?void 0:K.interpolation)!=null&&F.defaultVariables?a=S&&Object.keys(S).length>0?{...S,...g.options.interpolation.defaultVariables}:{...g.options.interpolation.defaultVariables}:a=S;const j=jze(e);j&&typeof j.count=="number"&&t===void 0&&(t=j.count);const T=a||t!==void 0&&!((H=(q=g.options)==null?void 0:q.interpolation)!=null&&H.alwaysFormat)||!e?x.interpolation:{interpolation:{...x.interpolation,prefix:"#$?",suffix:"?$#"}},N={...x,context:r||x.context,count:t,...a,...T,defaultValue:E,ns:y};let _=A?b(A,N):E;_===A&&E&&(_=E);const D=Pze(k,_,g,i);let M=D||e,P=null;Dze(D)&&(P=D,M=e);const L=Nze(M,P,_,g,v,N,O),B=n??v.defaultTransParent;return B?p.createElement(B,m,L):L}const Lze={type:"3rdParty",init(e){Cze(e.options.react),Tze(e)}},qwe=p.createContext();class $ze{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}function Rx({children:e,count:t,parent:n,i18nKey:i,context:r,tOptions:s={},values:a,defaults:l,components:c,ns:u,i18n:d,t:f,shouldUnescape:h,...m}){var w;const{i18n:g,defaultNS:b}=p.useContext(qwe)||{},v=d||g||Q9(),y=f||(v==null?void 0:v.t.bind(v));return Mze({children:e,count:t,parent:n,i18nKey:i,context:r,tOptions:s,values:a,defaults:l,components:c,ns:u||(y==null?void 0:y.ns)||b||((w=v==null?void 0:v.options)==null?void 0:w.defaultNS),i18n:v,t:f,shouldUnescape:h,...m})}var Wwe={exports:{}},Kwe={};/**
* @license React
* use-sync-external-store-shim.production.js
*
@@ -67,7 +67,7 @@ Studio:{{studioUrl}}
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var Ix=p;function Bze(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Uze=typeof Object.is=="function"?Object.is:Bze,Qze=Ix.useState,zze=Ix.useEffect,Vze=Ix.useLayoutEffect,Hze=Ix.useDebugValue;function qze(e,t){var n=t(),i=Qze({inst:{value:n,getSnapshot:t}}),r=i[0].inst,s=i[1];return Vze(function(){r.value=n,r.getSnapshot=t,zM(r)&&s({inst:r})},[e,n,t]),zze(function(){return zM(r)&&s({inst:r}),e(function(){zM(r)&&s({inst:r})})},[e]),Hze(n),n}function zM(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Uze(e,n)}catch{return!0}}function Wze(e,t){return t()}var Kze=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?Wze:qze;Gwe.useSyncExternalStore=Ix.useSyncExternalStore!==void 0?Ix.useSyncExternalStore:Kze;Kwe.exports=Gwe;var pI=Kwe.exports;const Gze=(e,t)=>{if(cc(t))return t;if(Ph(t)&&cc(t.defaultValue))return t.defaultValue;if(typeof e=="function")return"";if(Array.isArray(e)){const n=e[e.length-1];return typeof n=="function"?"":n}return e},Xze={t:Gze,ready:!1},Yze=()=>()=>{},je=(e,t={})=>{var R,A,j;const{i18n:n}=t,{i18n:i,defaultNS:r}=p.useContext(Wwe)||{},s=n||i||z9();s&&!s.reportNamespaces&&(s.reportNamespaces=new Fze),s||Gv(s,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.");const a=p.useMemo(()=>{var T;return{...Q9(),...(T=s==null?void 0:s.options)==null?void 0:T.react,...t}},[s,t]),{useSuspense:l,keyPrefix:c}=a,u=e||r||((R=s==null?void 0:s.options)==null?void 0:R.defaultNS),d=cc(u)?[u]:u||["translation"],f=p.useMemo(()=>d,d);(j=(A=s==null?void 0:s.reportNamespaces)==null?void 0:A.addUsedNamespaces)==null||j.call(A,f);const h=p.useRef(0),m=p.useCallback(T=>{if(!s)return Yze;const{bindI18n:N,bindI18nStore:_}=a,D=()=>{h.current+=1,T()};return N&&s.on(N,D),_&&s.store.on(_,D),()=>{N&&N.split(" ").forEach(M=>s.off(M,D)),_&&_.split(" ").forEach(M=>s.store.off(M,D))}},[s,a]),g=p.useRef(),b=p.useCallback(()=>{if(!s)return Xze;const T=!!(s.isInitialized||s.initializedStoreOnce)&&f.every(L=>kze(L,s,a)),N=t.lng||s.language,_=h.current,D=g.current;if(D&&D.ready===T&&D.lng===N&&D.keyPrefix===c&&D.revision===_)return D;const P={t:s.getFixedT(N,a.nsMode==="fallback"?f:f[0],c,{scopeNs:f}),ready:T,lng:N,keyPrefix:c,revision:_};return g.current=P,P},[s,f,c,a,t.lng]),[v,y]=p.useState(0),{t:w,ready:x}=pI.useSyncExternalStore(m,b,b);p.useEffect(()=>{if(s&&!x&&!l){const T=()=>y(N=>N+1);t.lng?hK(s,t.lng,f,T):O6(s,f,T)}},[s,t.lng,f,x,l,v]);const O=s||{},S=p.useRef(null),k=p.useRef(),C=T=>{const N=Object.getOwnPropertyDescriptors(T);N.__original&&delete N.__original;const _=Object.create(Object.getPrototypeOf(T),N);if(!Object.prototype.hasOwnProperty.call(_,"__original"))try{Object.defineProperty(_,"__original",{value:T,writable:!1,enumerable:!1,configurable:!1})}catch{}return _},E=p.useMemo(()=>{const T=O,N=T==null?void 0:T.language;let _=T;T&&(S.current&&S.current.__original===T?k.current!==N?(_=C(T),S.current=_,k.current=N):_=S.current:(_=C(T),S.current=_,k.current=N));const D=!x&&!l?(...P)=>(Gv(s,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),w(...P)):w,M=[D,_,x];return M.t=D,M.i18n=_,M.ready=x,M},[w,O,x,O.resolvedLanguage,O.language,O.languages]);if(s&&l&&!x){let T=!1;try{T=!1}catch{}throw T&&Gv(s,"SUSPENDED_WHILE_LOADING","useTranslation: suspended while translations are loading (useSuspense is true by default). Add a boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook"),new Promise(N=>{const _=()=>N();t.lng?hK(s,t.lng,f,_):O6(s,f,_)})}return E},Xwe=jQe(),hn=Dl.createInstance();hn.use($ze).init({resources:{"en-US":{adk:Kle,app:Yce,conversation:Tue},"zh-CN":{adk:D9,app:Jge,conversation:_be}},lng:Xwe,fallbackLng:sC,supportedLngs:[...M9],defaultNS:"common",interpolation:{escapeValue:!1},initAsync:!1});jwe(Xwe);hn.on("languageChanged",e=>{const t=oC(e)??sC;jwe(t)});const Zze=Object.assign({"./resources/en-US/adk.json":mUe,"./resources/en-US/agentReviews.json":bUe,"./resources/en-US/app.json":yUe,"./resources/en-US/automations.json":vUe,"./resources/en-US/common.json":wUe,"./resources/en-US/conversation.json":OUe,"./resources/en-US/create.json":kUe,"./resources/en-US/cronjobs.json":EUe,"./resources/en-US/deepseek.json":TUe,"./resources/en-US/feedback.json":_Ue,"./resources/en-US/migrations.json":NUe,"./resources/en-US/newChat.json":RUe,"./resources/en-US/reviews.json":PUe,"./resources/en-US/sandbox.json":DUe,"./resources/en-US/shell.json":LUe,"./resources/en-US/sidebar.json":FUe,"./resources/en-US/skills.json":BUe,"./resources/en-US/ui.json":QUe,"./resources/en-US/users.json":VUe,"./resources/en-US/websiteIntegration.json":qUe,"./resources/en-US/workspaceTools.json":WUe,"./resources/zh-CN/adk.json":KUe,"./resources/zh-CN/agentReviews.json":XUe,"./resources/zh-CN/app.json":YUe,"./resources/zh-CN/automations.json":ZUe,"./resources/zh-CN/common.json":eQe,"./resources/zh-CN/conversation.json":tQe,"./resources/zh-CN/create.json":nQe,"./resources/zh-CN/cronjobs.json":rQe,"./resources/zh-CN/deepseek.json":oQe,"./resources/zh-CN/feedback.json":lQe,"./resources/zh-CN/migrations.json":uQe,"./resources/zh-CN/newChat.json":dQe,"./resources/zh-CN/reviews.json":hQe,"./resources/zh-CN/sandbox.json":pQe,"./resources/zh-CN/shell.json":gQe,"./resources/zh-CN/sidebar.json":yQe,"./resources/zh-CN/skills.json":vQe,"./resources/zh-CN/ui.json":wQe,"./resources/zh-CN/users.json":kQe,"./resources/zh-CN/websiteIntegration.json":EQe,"./resources/zh-CN/workspaceTools.json":CQe});function Jze(){const e={};for(const[t,n]of Object.entries(Zze)){const i=t.match(/\/resources\/([^/]+)\/([^/]+)\.json$/);if(!i)continue;const[,r,s]=i;e[r]??(e[r]={}),e[r][s]=n.default}return e}for(const[e,t]of Object.entries(Jze()))for(const[n,i]of Object.entries(t??{}))hn.addResourceBundle(e,n,i,!0,!0);async function eVe(e){NQe(e),await hn.changeLanguage(e)}var Ywe={exports:{}},mI={},Zwe={exports:{}},Jwe={};/**
+ */var Ix=p;function Fze(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Bze=typeof Object.is=="function"?Object.is:Fze,Uze=Ix.useState,Qze=Ix.useEffect,zze=Ix.useLayoutEffect,Vze=Ix.useDebugValue;function Hze(e,t){var n=t(),i=Uze({inst:{value:n,getSnapshot:t}}),r=i[0].inst,s=i[1];return zze(function(){r.value=n,r.getSnapshot=t,zM(r)&&s({inst:r})},[e,n,t]),Qze(function(){return zM(r)&&s({inst:r}),e(function(){zM(r)&&s({inst:r})})},[e]),Vze(n),n}function zM(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Bze(e,n)}catch{return!0}}function qze(e,t){return t()}var Wze=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?qze:Hze;Kwe.useSyncExternalStore=Ix.useSyncExternalStore!==void 0?Ix.useSyncExternalStore:Wze;Wwe.exports=Kwe;var pI=Wwe.exports;const Kze=(e,t)=>{if(cc(t))return t;if(Ph(t)&&cc(t.defaultValue))return t.defaultValue;if(typeof e=="function")return"";if(Array.isArray(e)){const n=e[e.length-1];return typeof n=="function"?"":n}return e},Gze={t:Kze,ready:!1},Xze=()=>()=>{},je=(e,t={})=>{var R,A,j;const{i18n:n}=t,{i18n:i,defaultNS:r}=p.useContext(qwe)||{},s=n||i||Q9();s&&!s.reportNamespaces&&(s.reportNamespaces=new $ze),s||Gv(s,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.");const a=p.useMemo(()=>{var T;return{...U9(),...(T=s==null?void 0:s.options)==null?void 0:T.react,...t}},[s,t]),{useSuspense:l,keyPrefix:c}=a,u=e||r||((R=s==null?void 0:s.options)==null?void 0:R.defaultNS),d=cc(u)?[u]:u||["translation"],f=p.useMemo(()=>d,d);(j=(A=s==null?void 0:s.reportNamespaces)==null?void 0:A.addUsedNamespaces)==null||j.call(A,f);const h=p.useRef(0),m=p.useCallback(T=>{if(!s)return Xze;const{bindI18n:N,bindI18nStore:_}=a,D=()=>{h.current+=1,T()};return N&&s.on(N,D),_&&s.store.on(_,D),()=>{N&&N.split(" ").forEach(M=>s.off(M,D)),_&&_.split(" ").forEach(M=>s.store.off(M,D))}},[s,a]),g=p.useRef(),b=p.useCallback(()=>{if(!s)return Gze;const T=!!(s.isInitialized||s.initializedStoreOnce)&&f.every(L=>Oze(L,s,a)),N=t.lng||s.language,_=h.current,D=g.current;if(D&&D.ready===T&&D.lng===N&&D.keyPrefix===c&&D.revision===_)return D;const P={t:s.getFixedT(N,a.nsMode==="fallback"?f:f[0],c,{scopeNs:f}),ready:T,lng:N,keyPrefix:c,revision:_};return g.current=P,P},[s,f,c,a,t.lng]),[v,y]=p.useState(0),{t:w,ready:x}=pI.useSyncExternalStore(m,b,b);p.useEffect(()=>{if(s&&!x&&!l){const T=()=>y(N=>N+1);t.lng?fK(s,t.lng,f,T):O6(s,f,T)}},[s,t.lng,f,x,l,v]);const O=s||{},S=p.useRef(null),k=p.useRef(),C=T=>{const N=Object.getOwnPropertyDescriptors(T);N.__original&&delete N.__original;const _=Object.create(Object.getPrototypeOf(T),N);if(!Object.prototype.hasOwnProperty.call(_,"__original"))try{Object.defineProperty(_,"__original",{value:T,writable:!1,enumerable:!1,configurable:!1})}catch{}return _},E=p.useMemo(()=>{const T=O,N=T==null?void 0:T.language;let _=T;T&&(S.current&&S.current.__original===T?k.current!==N?(_=C(T),S.current=_,k.current=N):_=S.current:(_=C(T),S.current=_,k.current=N));const D=!x&&!l?(...P)=>(Gv(s,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),w(...P)):w,M=[D,_,x];return M.t=D,M.i18n=_,M.ready=x,M},[w,O,x,O.resolvedLanguage,O.language,O.languages]);if(s&&l&&!x){let T=!1;try{T=!1}catch{}throw T&&Gv(s,"SUSPENDED_WHILE_LOADING","useTranslation: suspended while translations are loading (useSuspense is true by default). Add a boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook"),new Promise(N=>{const _=()=>N();t.lng?fK(s,t.lng,f,_):O6(s,f,_)})}return E},Gwe=_Qe(),hn=Dl.createInstance();hn.use(Lze).init({resources:{"en-US":{adk:Wle,app:Xce,conversation:Cue},"zh-CN":{adk:P9,app:Zge,conversation:Abe}},lng:Gwe,fallbackLng:sC,supportedLngs:[...D9],defaultNS:"common",interpolation:{escapeValue:!1},initAsync:!1});_we(Gwe);hn.on("languageChanged",e=>{const t=oC(e)??sC;_we(t)});const Yze=Object.assign({"./resources/en-US/adk.json":pUe,"./resources/en-US/agentReviews.json":gUe,"./resources/en-US/app.json":bUe,"./resources/en-US/automations.json":yUe,"./resources/en-US/common.json":xUe,"./resources/en-US/conversation.json":wUe,"./resources/en-US/create.json":OUe,"./resources/en-US/cronjobs.json":SUe,"./resources/en-US/deepseek.json":CUe,"./resources/en-US/feedback.json":AUe,"./resources/en-US/migrations.json":jUe,"./resources/en-US/newChat.json":NUe,"./resources/en-US/reviews.json":IUe,"./resources/en-US/sandbox.json":PUe,"./resources/en-US/shell.json":MUe,"./resources/en-US/sidebar.json":$Ue,"./resources/en-US/skills.json":FUe,"./resources/en-US/ui.json":UUe,"./resources/en-US/users.json":zUe,"./resources/en-US/websiteIntegration.json":HUe,"./resources/en-US/workspaceTools.json":qUe,"./resources/zh-CN/adk.json":WUe,"./resources/zh-CN/agentReviews.json":GUe,"./resources/zh-CN/app.json":XUe,"./resources/zh-CN/automations.json":YUe,"./resources/zh-CN/common.json":JUe,"./resources/zh-CN/conversation.json":eQe,"./resources/zh-CN/create.json":tQe,"./resources/zh-CN/cronjobs.json":iQe,"./resources/zh-CN/deepseek.json":sQe,"./resources/zh-CN/feedback.json":aQe,"./resources/zh-CN/migrations.json":cQe,"./resources/zh-CN/newChat.json":uQe,"./resources/zh-CN/reviews.json":fQe,"./resources/zh-CN/sandbox.json":hQe,"./resources/zh-CN/shell.json":mQe,"./resources/zh-CN/sidebar.json":bQe,"./resources/zh-CN/skills.json":yQe,"./resources/zh-CN/ui.json":xQe,"./resources/zh-CN/users.json":OQe,"./resources/zh-CN/websiteIntegration.json":SQe,"./resources/zh-CN/workspaceTools.json":EQe});function Zze(){const e={};for(const[t,n]of Object.entries(Yze)){const i=t.match(/\/resources\/([^/]+)\/([^/]+)\.json$/);if(!i)continue;const[,r,s]=i;e[r]??(e[r]={}),e[r][s]=n.default}return e}for(const[e,t]of Object.entries(Zze()))for(const[n,i]of Object.entries(t??{}))hn.addResourceBundle(e,n,i,!0,!0);async function Jze(e){jQe(e),await hn.changeLanguage(e)}var Xwe={exports:{}},mI={},Ywe={exports:{}},Zwe={};/**
* @license React
* scheduler.production.js
*
@@ -75,7 +75,7 @@ Studio:{{studioUrl}}
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */(function(e){function t(M,P){var L=M.length;M.push(P);e:for(;0>>1,I=M[B];if(0>>1;Br(F,L))qr(H,F)?(M[B]=H,M[q]=L,B=q):(M[B]=F,M[K]=L,B=K);else if(qr(H,L))M[B]=H,M[q]=L,B=q;else break e}}return P}function r(M,P){var L=M.sortIndex-P.sortIndex;return L!==0?L:M.id-P.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var c=[],u=[],d=1,f=null,h=3,m=!1,g=!1,b=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,x=typeof setImmediate<"u"?setImmediate:null;function O(M){for(var P=n(u);P!==null;){if(P.callback===null)i(u);else if(P.startTime<=M)i(u),P.sortIndex=P.expirationTime,t(c,P);else break;P=n(u)}}function S(M){if(b=!1,O(M),!g)if(n(c)!==null)g=!0,k||(k=!0,T());else{var P=n(u);P!==null&&D(S,P.startTime-M)}}var k=!1,C=-1,E=5,R=-1;function A(){return v?!0:!(e.unstable_now()-RM&&A());){var B=f.callback;if(typeof B=="function"){f.callback=null,h=f.priorityLevel;var I=B(f.expirationTime<=M);if(M=e.unstable_now(),typeof I=="function"){f.callback=I,O(M),P=!0;break t}f===n(c)&&i(c),O(M)}else i(c);f=n(c)}if(f!==null)P=!0;else{var z=n(u);z!==null&&D(S,z.startTime-M),P=!1}}break e}finally{f=null,h=L,m=!1}P=void 0}}finally{P?T():k=!1}}}var T;if(typeof x=="function")T=function(){x(j)};else if(typeof MessageChannel<"u"){var N=new MessageChannel,_=N.port2;N.port1.onmessage=j,T=function(){_.postMessage(null)}}else T=function(){y(j,0)};function D(M,P){C=y(function(){M(e.unstable_now())},P)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_forceFrameRate=function(M){0>M||125B?(M.sortIndex=L,t(u,M),n(c)===null&&M===n(u)&&(b?(w(C),C=-1):b=!0,D(S,L-B))):(M.sortIndex=I,t(c,M),g||m||(g=!0,k||(k=!0,T()))),M},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(M){var P=h;return function(){var L=h;h=P;try{return M.apply(this,arguments)}finally{h=L}}}})(Jwe);Zwe.exports=Jwe;var tVe=Zwe.exports,e1e={exports:{}},Ml={};/**
+ */(function(e){function t(M,P){var L=M.length;M.push(P);e:for(;0>>1,I=M[B];if(0>>1;Br(F,L))qr(H,F)?(M[B]=H,M[q]=L,B=q):(M[B]=F,M[K]=L,B=K);else if(qr(H,L))M[B]=H,M[q]=L,B=q;else break e}}return P}function r(M,P){var L=M.sortIndex-P.sortIndex;return L!==0?L:M.id-P.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;e.unstable_now=function(){return s.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var c=[],u=[],d=1,f=null,h=3,m=!1,g=!1,b=!1,v=!1,y=typeof setTimeout=="function"?setTimeout:null,w=typeof clearTimeout=="function"?clearTimeout:null,x=typeof setImmediate<"u"?setImmediate:null;function O(M){for(var P=n(u);P!==null;){if(P.callback===null)i(u);else if(P.startTime<=M)i(u),P.sortIndex=P.expirationTime,t(c,P);else break;P=n(u)}}function S(M){if(b=!1,O(M),!g)if(n(c)!==null)g=!0,k||(k=!0,T());else{var P=n(u);P!==null&&D(S,P.startTime-M)}}var k=!1,C=-1,E=5,R=-1;function A(){return v?!0:!(e.unstable_now()-RM&&A());){var B=f.callback;if(typeof B=="function"){f.callback=null,h=f.priorityLevel;var I=B(f.expirationTime<=M);if(M=e.unstable_now(),typeof I=="function"){f.callback=I,O(M),P=!0;break t}f===n(c)&&i(c),O(M)}else i(c);f=n(c)}if(f!==null)P=!0;else{var z=n(u);z!==null&&D(S,z.startTime-M),P=!1}}break e}finally{f=null,h=L,m=!1}P=void 0}}finally{P?T():k=!1}}}var T;if(typeof x=="function")T=function(){x(j)};else if(typeof MessageChannel<"u"){var N=new MessageChannel,_=N.port2;N.port1.onmessage=j,T=function(){_.postMessage(null)}}else T=function(){y(j,0)};function D(M,P){C=y(function(){M(e.unstable_now())},P)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(M){M.callback=null},e.unstable_forceFrameRate=function(M){0>M||125B?(M.sortIndex=L,t(u,M),n(c)===null&&M===n(u)&&(b?(w(C),C=-1):b=!0,D(S,L-B))):(M.sortIndex=I,t(c,M),g||m||(g=!0,k||(k=!0,T()))),M},e.unstable_shouldYield=A,e.unstable_wrapCallback=function(M){var P=h;return function(){var L=h;h=P;try{return M.apply(this,arguments)}finally{h=L}}}})(Zwe);Ywe.exports=Zwe;var eVe=Ywe.exports,Jwe={exports:{}},Ml={};/**
* @license React
* react-dom.production.js
*
@@ -83,7 +83,7 @@ Studio:{{studioUrl}}
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var nVe=p;function t1e(e){var t="https://react.dev/errors/"+e;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n1e)}catch(e){console.error(e)}}n1e(),e1e.exports=Ml;var si=e1e.exports;/**
+ */var tVe=p;function e1e(e){var t="https://react.dev/errors/"+e;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t1e)}catch(e){console.error(e)}}t1e(),Jwe.exports=Ml;var si=Jwe.exports;/**
* @license React
* react-dom-client.production.js
*
@@ -91,15 +91,15 @@ Studio:{{studioUrl}}
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var na=tVe,i1e=p,sVe=si;function xt(e){var t="https://react.dev/errors/"+e;if(1wv||(e.current=j6[wv],j6[wv]=null,wv--)}function ts(e,t){wv++,j6[wv]=e.current,e.current=t}var jf=zf(null),SS=zf(null),Pm=zf(null),Lj=zf(null);function $j(e,t){switch(ts(Pm,t),ts(SS,e),ts(jf,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?wG(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=wG(t),e=_ke(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}xa(jf),ts(jf,e)}function Px(){xa(jf),xa(SS),xa(Pm)}function N6(e){e.memoizedState!==null&&ts(Lj,e);var t=jf.current,n=_ke(t,e.type);t!==n&&(ts(SS,e),ts(jf,n))}function Fj(e){SS.current===e&&(xa(jf),xa(SS)),Lj.current===e&&(xa(Lj),DS._currentValue=Gb)}var VM,gK;function fb(e){if(VM===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);VM=t&&t[1]||"",gK=-1wv||(e.current=j6[wv],j6[wv]=null,wv--)}function ts(e,t){wv++,j6[wv]=e.current,e.current=t}var jf=zf(null),SS=zf(null),Pm=zf(null),Lj=zf(null);function $j(e,t){switch(ts(Pm,t),ts(SS,e),ts(jf,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?xG(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=xG(t),e=Ake(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}xa(jf),ts(jf,e)}function Px(){xa(jf),xa(SS),xa(Pm)}function N6(e){e.memoizedState!==null&&ts(Lj,e);var t=jf.current,n=Ake(t,e.type);t!==n&&(ts(SS,e),ts(jf,n))}function Fj(e){SS.current===e&&(xa(jf),xa(SS)),Lj.current===e&&(xa(Lj),DS._currentValue=Gb)}var VM,mK;function fb(e){if(VM===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);VM=t&&t[1]||"",mK=-1)":-1r||c[i]!==u[r]){var d=`
-`+c[i].replace(" at new "," at ");return e.displayName&&d.includes("")&&(d=d.replace("",e.displayName)),d}while(1<=i&&0<=r);break}}}finally{HM=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?fb(n):""}function uVe(e,t){switch(e.tag){case 26:case 27:case 5:return fb(e.type);case 16:return fb("Lazy");case 13:return e.child!==t&&t!==null?fb("Suspense Fallback"):fb("Suspense");case 19:return fb("SuspenseList");case 0:case 15:return qM(e.type,!1);case 11:return qM(e.type.render,!1);case 1:return qM(e.type,!0);case 31:return fb("Activity");default:return""}}function bK(e){try{var t="",n=null;do t+=uVe(e,n),n=e,e=e.return;while(e);return t}catch(i){return`
+`+c[i].replace(" at new "," at ");return e.displayName&&d.includes("")&&(d=d.replace("",e.displayName)),d}while(1<=i&&0<=r);break}}}finally{HM=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?fb(n):""}function cVe(e,t){switch(e.tag){case 26:case 27:case 5:return fb(e.type);case 16:return fb("Lazy");case 13:return e.child!==t&&t!==null?fb("Suspense Fallback"):fb("Suspense");case 19:return fb("SuspenseList");case 0:case 15:return qM(e.type,!1);case 11:return qM(e.type.render,!1);case 1:return qM(e.type,!0);case 31:return fb("Activity");default:return""}}function gK(e){try{var t="",n=null;do t+=cVe(e,n),n=e,e=e.return;while(e);return t}catch(i){return`
Error generating stack: `+i.message+`
-`+i.stack}}var R6=Object.prototype.hasOwnProperty,q9=na.unstable_scheduleCallback,WM=na.unstable_cancelCallback,dVe=na.unstable_shouldYield,fVe=na.unstable_requestPaint,Zc=na.unstable_now,hVe=na.unstable_getCurrentPriorityLevel,u1e=na.unstable_ImmediatePriority,d1e=na.unstable_UserBlockingPriority,Bj=na.unstable_NormalPriority,pVe=na.unstable_LowPriority,f1e=na.unstable_IdlePriority,mVe=na.log,gVe=na.unstable_setDisableYieldValue,lC=null,Jc=null;function wm(e){if(typeof mVe=="function"&&gVe(e),Jc&&typeof Jc.setStrictMode=="function")try{Jc.setStrictMode(lC,e)}catch{}}var eu=Math.clz32?Math.clz32:vVe,bVe=Math.log,yVe=Math.LN2;function vVe(e){return e>>>=0,e===0?32:31-(bVe(e)/yVe|0)|0}var o2=256,a2=262144,l2=4194304;function hb(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function bI(e,t,n){var i=e.pendingLanes;if(i===0)return 0;var r=0,s=e.suspendedLanes,a=e.pingedLanes;e=e.warmLanes;var l=i&134217727;return l!==0?(i=l&~s,i!==0?r=hb(i):(a&=l,a!==0?r=hb(a):n||(n=l&~e,n!==0&&(r=hb(n))))):(l=i&~s,l!==0?r=hb(l):a!==0?r=hb(a):n||(n=i&~e,n!==0&&(r=hb(n)))),r===0?0:t!==0&&t!==r&&!(t&s)&&(s=r&-r,n=t&-t,s>=n||s===32&&(n&4194048)!==0)?t:r}function cC(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function xVe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function h1e(){var e=l2;return l2<<=1,!(l2&62914560)&&(l2=4194304),e}function KM(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function uC(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function wVe(e,t,n,i,r,s){var a=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,c=e.expirationTimes,u=e.hiddenUpdates;for(n=a&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var TVe=/[\n"\\]/g;function ju(e){return e.replace(TVe,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function D6(e,t,n,i,r,s,a,l){e.name="",a!=null&&typeof a!="function"&&typeof a!="symbol"&&typeof a!="boolean"?e.type=a:e.removeAttribute("type"),t!=null?a==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Eu(t)):e.value!==""+Eu(t)&&(e.value=""+Eu(t)):a!=="submit"&&a!=="reset"||e.removeAttribute("value"),t!=null?M6(e,a,Eu(t)):n!=null?M6(e,a,Eu(n)):i!=null&&e.removeAttribute("value"),r==null&&s!=null&&(e.defaultChecked=!!s),r!=null&&(e.checked=r&&typeof r!="function"&&typeof r!="symbol"),l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"?e.name=""+Eu(l):e.removeAttribute("name")}function O1e(e,t,n,i,r,s,a,l){if(s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(e.type=s),t!=null||n!=null){if(!(s!=="submit"&&s!=="reset"||t!=null)){P6(e);return}n=n!=null?""+Eu(n):"",t=t!=null?""+Eu(t):n,l||t===e.value||(e.value=t),e.defaultValue=t}i=i??r,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=l?e.checked:!!i,e.defaultChecked=!!i,a!=null&&typeof a!="function"&&typeof a!="symbol"&&typeof a!="boolean"&&(e.name=a),P6(e)}function M6(e,t,n){t==="number"&&Uj(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Yv(e,t,n,i){if(e=e.options,t){t={};for(var r=0;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),$6=!1;if(np)try{var X1={};Object.defineProperty(X1,"passive",{get:function(){$6=!0}}),window.addEventListener("test",X1,X1),window.removeEventListener("test",X1,X1)}catch{$6=!1}var Om=null,Z9=null,y_=null;function T1e(){if(y_)return y_;var e,t=Z9,n=t.length,i,r="value"in Om?Om.value:Om.textContent,s=r.length;for(e=0;e=Sk),AK=" ",_K=!1;function _1e(e,t){switch(e){case"keyup":return tHe.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function j1e(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Sv=!1;function iHe(e,t){switch(e){case"compositionend":return j1e(t);case"keypress":return t.which!==32?null:(_K=!0,AK);case"textInput":return e=t.data,e===AK&&_K?null:e;default:return null}}function rHe(e,t){if(Sv)return e==="compositionend"||!e7&&_1e(e,t)?(e=T1e(),y_=Z9=Om=null,Sv=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=i}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=PK(n)}}function P1e(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?P1e(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function D1e(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Uj(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Uj(e.document)}return t}function t7(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var fHe=np&&"documentMode"in document&&11>=document.documentMode,Ev=null,F6=null,Ck=null,B6=!1;function MK(e,t,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;B6||Ev==null||Ev!==Uj(i)||(i=Ev,"selectionStart"in i&&t7(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Ck&&TS(Ck,i)||(Ck=i,i=sN(F6,"onSelect"),0>=a,r-=a,wf=1<<32-eu(t)+r|n<E?(R=C,C=null):R=C.sibling;var A=h(y,C,x[E],O);if(A===null){C===null&&(C=R);break}e&&C&&A.alternate===null&&t(y,C),w=s(A,w,E),k===null?S=A:k.sibling=A,k=A,C=R}if(E===x.length)return n(y,C),Ki&&Eh(y,E),S;if(C===null){for(;EE?(R=C,C=null):R=C.sibling;var j=h(y,C,A.value,O);if(j===null){C===null&&(C=R);break}e&&C&&j.alternate===null&&t(y,C),w=s(j,w,E),k===null?S=j:k.sibling=j,k=j,C=R}if(A.done)return n(y,C),Ki&&Eh(y,E),S;if(C===null){for(;!A.done;E++,A=x.next())A=f(y,A.value,O),A!==null&&(w=s(A,w,E),k===null?S=A:k.sibling=A,k=A);return Ki&&Eh(y,E),S}for(C=i(C);!A.done;E++,A=x.next())A=m(C,y,E,A.value,O),A!==null&&(e&&A.alternate!==null&&C.delete(A.key===null?E:A.key),w=s(A,w,E),k===null?S=A:k.sibling=A,k=A);return e&&C.forEach(function(T){return t(y,T)}),Ki&&Eh(y,E),S}function v(y,w,x,O){if(typeof x=="object"&&x!==null&&x.type===xv&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case s2:e:{for(var S=x.key;w!==null;){if(w.key===S){if(S=x.type,S===xv){if(w.tag===7){n(y,w.sibling),O=r(w,x.props.children),O.return=y,y=O;break e}}else if(w.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===sm&&pb(S)===w.type){n(y,w.sibling),O=r(w,x.props),Z1(O,x),O.return=y,y=O;break e}n(y,w);break}else t(y,w);w=w.sibling}x.type===xv?(O=Xb(x.props.children,y.mode,O,x.key),O.return=y,y=O):(O=x_(x.type,x.key,x.props,null,y.mode,O),Z1(O,x),O.return=y,y=O)}return a(y);case HO:e:{for(S=x.key;w!==null;){if(w.key===S)if(w.tag===4&&w.stateNode.containerInfo===x.containerInfo&&w.stateNode.implementation===x.implementation){n(y,w.sibling),O=r(w,x.children||[]),O.return=y,y=O;break e}else{n(y,w);break}else t(y,w);w=w.sibling}O=i5(x,y.mode,O),O.return=y,y=O}return a(y);case sm:return x=pb(x),v(y,w,x,O)}if(qO(x))return g(y,w,x,O);if(G1(x)){if(S=G1(x),typeof S!="function")throw Error(xt(150));return x=S.call(x),b(y,w,x,O)}if(typeof x.then=="function")return v(y,w,f2(x),O);if(x.$$typeof===Dh)return v(y,w,d2(y,x),O);h2(y,x)}return typeof x=="string"&&x!==""||typeof x=="number"||typeof x=="bigint"?(x=""+x,w!==null&&w.tag===6?(n(y,w.sibling),O=r(w,x),O.return=y,y=O):(n(y,w),O=n5(x,y.mode,O),O.return=y,y=O),a(y)):n(y,w)}return function(y,w,x,O){try{jS=0;var S=v(y,w,x,O);return ex=null,S}catch(C){if(C===Pw||C===kI)throw C;var k=qc(29,C,null,y.mode);return k.lanes=O,k.return=y,k}finally{}}}var fy=X1e(!0),Y1e=X1e(!1),om=!1;function u7(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function W6(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Mm(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Lm(e,t,n){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,ur&2){var r=i.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),i.pending=t,t=zj(e),Q1e(e,null,n),t}return OI(e,i,t,n),zj(e)}function Ak(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,m1e(e,n)}}function s5(e,t){var n=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,n===i)){var r=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var a={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};s===null?r=s=a:s=s.next=a,n=n.next}while(n!==null);s===null?r=s=t:s=s.next=t}else r=s=t;n={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:s,shared:i.shared,callbacks:i.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var K6=!1;function _k(){if(K6){var e=Jv;if(e!==null)throw e}}function jk(e,t,n,i){K6=!1;var r=e.updateQueue;om=!1;var s=r.firstBaseUpdate,a=r.lastBaseUpdate,l=r.shared.pending;if(l!==null){r.shared.pending=null;var c=l,u=c.next;c.next=null,a===null?s=u:a.next=u,a=c;var d=e.alternate;d!==null&&(d=d.updateQueue,l=d.lastBaseUpdate,l!==a&&(l===null?d.firstBaseUpdate=u:l.next=u,d.lastBaseUpdate=c))}if(s!==null){var f=r.baseState;a=0,d=u=c=null,l=s;do{var h=l.lane&-536870913,m=h!==l.lane;if(m?(Qi&h)===h:(i&h)===h){h!==0&&h===Lx&&(K6=!0),d!==null&&(d=d.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var g=e,b=l;h=t;var v=n;switch(b.tag){case 1:if(g=b.payload,typeof g=="function"){f=g.call(v,f,h);break e}f=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=b.payload,h=typeof g=="function"?g.call(v,f,h):g,h==null)break e;f=bs({},f,h);break e;case 2:om=!0}}h=l.callback,h!==null&&(e.flags|=64,m&&(e.flags|=8192),m=r.callbacks,m===null?r.callbacks=[h]:m.push(h))}else m={lane:h,tag:l.tag,payload:l.payload,callback:l.callback,next:null},d===null?(u=d=m,c=f):d=d.next=m,a|=h;if(l=l.next,l===null){if(l=r.shared.pending,l===null)break;m=l,l=m.next,m.next=null,r.lastBaseUpdate=m,r.shared.pending=null}}while(!0);d===null&&(c=f),r.baseState=c,r.firstBaseUpdate=u,r.lastBaseUpdate=d,s===null&&(r.shared.lanes=0),tg|=a,e.lanes=a,e.memoizedState=f}}function Z1e(e,t){if(typeof e!="function")throw Error(xt(191,e));e.call(t)}function J1e(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;es?s:8;var a=zn.T,l={};zn.T=l,k7(e,!1,t,n);try{var c=r(),u=zn.S;if(u!==null&&u(l,c),c!==null&&typeof c=="object"&&typeof c.then=="function"){var d=wHe(c,i);Nk(e,t,d,tu(e))}else Nk(e,t,i,tu(e))}catch(f){Nk(e,t,{then:function(){},status:"rejected",reason:f},tu())}finally{dr.p=s,a!==null&&l.types!==null&&(a.types=l.types),zn.T=a}}function THe(){}function J6(e,t,n,i){if(e.tag!==5)throw Error(xt(476));var r=SOe(e).queue;kOe(e,r,t,Gb,n===null?THe:function(){return EOe(e),n(i)})}function SOe(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Gb,baseState:Gb,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rp,lastRenderedState:Gb},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rp,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function EOe(e){var t=SOe(e);t.next===null&&(t=e.alternate.memoizedState),Nk(e,t.next.queue,{},tu())}function O7(){return Ba(DS)}function COe(){return vo().memoizedState}function TOe(){return vo().memoizedState}function AHe(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=tu();e=Mm(n);var i=Lm(t,e,n);i!==null&&(uc(i,t,n),Ak(i,t,n)),t={cache:a7()},e.payload=t;return}t=t.return}}function _He(e,t,n){var i=tu();n={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},TI(e)?_Oe(t,n):(n=i7(e,t,n,i),n!==null&&(uc(n,e,i),jOe(n,t,i)))}function AOe(e,t,n){var i=tu();Nk(e,t,n,i)}function Nk(e,t,n,i){var r={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(TI(e))_Oe(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var a=t.lastRenderedState,l=s(a,n);if(r.hasEagerState=!0,r.eagerState=l,lu(l,a))return OI(e,t,r,0),Wr===null&&wI(),!1}catch{}finally{}if(n=i7(e,t,r,i),n!==null)return uc(n,e,i),jOe(n,t,i),!0}return!1}function k7(e,t,n,i){if(i={lane:2,revertLane:R7(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},TI(e)){if(t)throw Error(xt(479))}else t=i7(e,n,i,2),t!==null&&uc(t,e,2)}function TI(e){var t=e.alternate;return e===gi||t!==null&&t===gi}function _Oe(e,t){tx=Gj=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function jOe(e,t,n){if(n&4194048){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,m1e(e,n)}}var RS={readContext:Ba,use:EI,useCallback:Ws,useContext:Ws,useEffect:Ws,useImperativeHandle:Ws,useLayoutEffect:Ws,useInsertionEffect:Ws,useMemo:Ws,useReducer:Ws,useRef:Ws,useState:Ws,useDebugValue:Ws,useDeferredValue:Ws,useTransition:Ws,useSyncExternalStore:Ws,useId:Ws,useHostTransitionStatus:Ws,useFormState:Ws,useActionState:Ws,useOptimistic:Ws,useMemoCache:Ws,useCacheRefresh:Ws};RS.useEffectEvent=Ws;var NOe={readContext:Ba,use:EI,useCallback:function(e,t){return wl().memoizedState=[e,t===void 0?null:t],e},useContext:Ba,useEffect:YK,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,k_(4194308,4,yOe.bind(null,t,e),n)},useLayoutEffect:function(e,t){return k_(4194308,4,e,t)},useInsertionEffect:function(e,t){k_(4,2,e,t)},useMemo:function(e,t){var n=wl();t=t===void 0?null:t;var i=e();if(hy){wm(!0);try{e()}finally{wm(!1)}}return n.memoizedState=[i,t],i},useReducer:function(e,t,n){var i=wl();if(n!==void 0){var r=n(t);if(hy){wm(!0);try{n(t)}finally{wm(!1)}}}else r=t;return i.memoizedState=i.baseState=r,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},i.queue=e,e=e.dispatch=_He.bind(null,gi,e),[i.memoizedState,e]},useRef:function(e){var t=wl();return e={current:e},t.memoizedState=e},useState:function(e){e=Y6(e);var t=e.queue,n=AOe.bind(null,gi,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:x7,useDeferredValue:function(e,t){var n=wl();return w7(n,e,t)},useTransition:function(){var e=Y6(!1);return e=kOe.bind(null,gi,e.queue,!0,!1),wl().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var i=gi,r=wl();if(Ki){if(n===void 0)throw Error(xt(407));n=n()}else{if(n=t(),Wr===null)throw Error(xt(349));Qi&127||rOe(i,t,n)}r.memoizedState=n;var s={value:n,getSnapshot:t};return r.queue=s,YK(oOe.bind(null,i,s,e),[e]),i.flags|=2048,Fx(9,{destroy:void 0},sOe.bind(null,i,s,n,t),null),n},useId:function(){var e=wl(),t=Wr.identifierPrefix;if(Ki){var n=Of,i=wf;n=(i&~(1<<32-eu(i)-1)).toString(32)+n,t="_"+t+"R_"+n,n=Xj++,0<\/script>",s=s.removeChild(s.firstChild);break;case"select":s=typeof i.is=="string"?a.createElement("select",{is:i.is}):a.createElement("select"),i.multiple?s.multiple=!0:i.size&&(s.size=i.size);break;default:s=typeof i.is=="string"?a.createElement(r,{is:i.is}):a.createElement(r)}}s[La]=t,s[fc]=i;e:for(a=t.child;a!==null;){if(a.tag===5||a.tag===6)s.appendChild(a.stateNode);else if(a.tag!==4&&a.tag!==27&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break e;for(;a.sibling===null;){if(a.return===null||a.return===t)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}t.stateNode=s;e:switch(Ua(s,r,i),r){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&ah(t)}}return ls(t),h5(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&ah(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(xt(166));if(e=Pm.current,R0(t)){if(e=t.stateNode,n=t.memoizedProps,i=null,r=$a,r!==null)switch(r.tag){case 27:case 5:i=r.memoizedProps}e[La]=t,e=!!(e.nodeValue===n||i!==null&&i.suppressHydrationWarning===!0||Ake(e.nodeValue,n)),e||Jm(t,!0)}else e=oN(e).createTextNode(i),e[La]=t,t.stateNode=e}return ls(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(i=R0(t),n!==null){if(e===null){if(!i)throw Error(xt(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(xt(557));e[La]=t}else uy(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ls(t),e=!1}else n=r5(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Hc(t),t):(Hc(t),null);if(t.flags&128)throw Error(xt(558))}return ls(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(r=R0(t),i!==null&&i.dehydrated!==null){if(e===null){if(!r)throw Error(xt(318));if(r=t.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(xt(317));r[La]=t}else uy(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ls(t),r=!1}else r=r5(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),r=!0;if(!r)return t.flags&256?(Hc(t),t):(Hc(t),null)}return Hc(t),t.flags&128?(t.lanes=n,t):(n=i!==null,e=e!==null&&e.memoizedState!==null,n&&(i=t.child,r=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(r=i.alternate.memoizedState.cachePool.pool),s=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(s=i.memoizedState.cachePool.pool),s!==r&&(i.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),p2(t,t.updateQueue),ls(t),null);case 4:return Px(),e===null&&I7(t.stateNode.containerInfo),ls(t),null;case 10:return Qh(t.type),ls(t),null;case 19:if(xa(go),i=t.memoizedState,i===null)return ls(t),null;if(r=(t.flags&128)!==0,s=i.rendering,s===null)if(r)J1(i,!1);else{if(Xs!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(s=Kj(e),s!==null){for(t.flags|=128,J1(i,!1),e=s.updateQueue,t.updateQueue=e,p2(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)z1e(n,e),n=n.sibling;return ts(go,go.current&1|2),Ki&&Eh(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&Zc()>eN&&(t.flags|=128,r=!0,J1(i,!1),t.lanes=4194304)}else{if(!r)if(e=Kj(s),e!==null){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,p2(t,e),J1(i,!0),i.tail===null&&i.tailMode==="hidden"&&!s.alternate&&!Ki)return ls(t),null}else 2*Zc()-i.renderingStartTime>eN&&n!==536870912&&(t.flags|=128,r=!0,J1(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(e=i.last,e!==null?e.sibling=s:t.child=s,i.last=s)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=Zc(),e.sibling=null,n=go.current,ts(go,r?n&1|2:n&1),Ki&&Eh(t,i.treeForkCount),e):(ls(t),null);case 22:case 23:return Hc(t),d7(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?n&536870912&&!(t.flags&128)&&(ls(t),t.subtreeFlags&6&&(t.flags|=8192)):ls(t),n=t.updateQueue,n!==null&&p2(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==n&&(t.flags|=2048),e!==null&&xa(Yb),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Qh(Po),ls(t),null;case 25:return null;case 30:return null}throw Error(xt(156,t.tag))}function PHe(e,t){switch(o7(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Qh(Po),Px(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Fj(t),null;case 31:if(t.memoizedState!==null){if(Hc(t),t.alternate===null)throw Error(xt(340));uy()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Hc(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(xt(340));uy()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return xa(go),null;case 4:return Px(),null;case 10:return Qh(t.type),null;case 22:case 23:return Hc(t),d7(),e!==null&&xa(Yb),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Qh(Po),null;case 25:return null;default:return null}}function zOe(e,t){switch(o7(t),t.tag){case 3:Qh(Po),Px();break;case 26:case 27:case 5:Fj(t);break;case 4:Px();break;case 31:t.memoizedState!==null&&Hc(t);break;case 13:Hc(t);break;case 19:xa(go);break;case 10:Qh(t.type);break;case 22:case 23:Hc(t),d7(),e!==null&&xa(Yb);break;case 24:Qh(Po)}}function mC(e,t){try{var n=t.updateQueue,i=n!==null?n.lastEffect:null;if(i!==null){var r=i.next;n=r;do{if((n.tag&e)===e){i=void 0;var s=n.create,a=n.inst;i=s(),a.destroy=i}n=n.next}while(n!==r)}}catch(l){Er(t,t.return,l)}}function eg(e,t,n){try{var i=t.updateQueue,r=i!==null?i.lastEffect:null;if(r!==null){var s=r.next;i=s;do{if((i.tag&e)===e){var a=i.inst,l=a.destroy;if(l!==void 0){a.destroy=void 0,r=t;var c=n,u=l;try{u()}catch(d){Er(r,c,d)}}}i=i.next}while(i!==s)}}catch(d){Er(t,t.return,d)}}function VOe(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{J1e(t,n)}catch(i){Er(e,e.return,i)}}}function HOe(e,t,n){n.props=py(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(i){Er(e,t,i)}}function Rk(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof n=="function"?e.refCleanup=n(i):n.current=i}}catch(r){Er(e,t,r)}}function kf(e,t){var n=e.ref,i=e.refCleanup;if(n!==null)if(typeof i=="function")try{i()}catch(r){Er(e,t,r)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(r){Er(e,t,r)}else n.current=null}function qOe(e){var t=e.type,n=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&i.focus();break e;case"img":n.src?i.src=n.src:n.srcSet&&(i.srcset=n.srcSet)}}catch(r){Er(e,e.return,r)}}function p5(e,t,n){try{var i=e.stateNode;nqe(i,e.type,n,t),i[fc]=t}catch(r){Er(e,e.return,r)}}function WOe(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Tg(e.type)||e.tag===4}function m5(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||WOe(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Tg(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function r$(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Mh));else if(i!==4&&(i===27&&Tg(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(r$(e,t,n),e=e.sibling;e!==null;)r$(e,t,n),e=e.sibling}function Jj(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(i!==4&&(i===27&&Tg(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Jj(e,t,n),e=e.sibling;e!==null;)Jj(e,t,n),e=e.sibling}function KOe(e){var t=e.stateNode,n=e.memoizedProps;try{for(var i=e.type,r=t.attributes;r.length;)t.removeAttributeNode(r[0]);Ua(t,i,n),t[La]=e,t[fc]=n}catch(s){Er(e,e.return,s)}}var jh=!1,Io=!1,g5=!1,uG=typeof WeakSet=="function"?WeakSet:Set,fa=null;function DHe(e,t){if(e=e.containerInfo,d$=uN,e=D1e(e),t7(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var a=0,l=-1,c=-1,u=0,d=0,f=e,h=null;t:for(;;){for(var m;f!==n||r!==0&&f.nodeType!==3||(l=a+r),f!==s||i!==0&&f.nodeType!==3||(c=a+i),f.nodeType===3&&(a+=f.nodeValue.length),(m=f.firstChild)!==null;)h=f,f=m;for(;;){if(f===e)break t;if(h===n&&++u===r&&(l=a),h===s&&++d===i&&(c=a),(m=f.nextSibling)!==null)break;f=h,h=f.parentNode}f=m}n=l===-1||c===-1?null:{start:l,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(f$={focusedElem:e,selectionRange:n},uN=!1,fa=t;fa!==null;)if(t=fa,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,fa=e;else for(;fa!==null;){switch(t=fa,s=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),Ua(s,i,n),s[La]=e,pa(s),i=s;break e;case"link":var a=jG("link","href",r).get(i+(n.href||""));if(a){for(var l=0;lv&&(a=v,v=b,b=a);var y=DK(l,b),w=DK(l,v);if(y&&w&&(m.rangeCount!==1||m.anchorNode!==y.node||m.anchorOffset!==y.offset||m.focusNode!==w.node||m.focusOffset!==w.offset)){var x=f.createRange();x.setStart(y.node,y.offset),m.removeAllRanges(),b>v?(m.addRange(x),m.extend(w.node,w.offset)):(x.setEnd(w.node,w.offset),m.addRange(x))}}}}for(f=[],m=l;m=m.parentNode;)m.nodeType===1&&f.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;ln?32:n,zn.T=null,n=a$,a$=null;var s=Fm,a=zh;if(Jo=0,Ux=Fm=null,zh=0,ur&6)throw Error(xt(331));var l=ur;if(ur|=4,ske(s.current),nke(s,s.current,a,n),ur=l,gC(0,!1),Jc&&typeof Jc.onPostCommitFiberRoot=="function")try{Jc.onPostCommitFiberRoot(lC,s)}catch{}return!0}finally{dr.p=r,zn.T=i,xke(e,t)}}function pG(e,t,n){t=Nu(n,t),t=t$(e.stateNode,t,2),e=Lm(e,t,2),e!==null&&(uC(e,2),Vf(e))}function Er(e,t,n){if(e.tag===3)pG(e,e,n);else for(;t!==null;){if(t.tag===3){pG(t,e,n);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&($m===null||!$m.has(i))){e=Nu(n,e),n=MOe(2),i=Lm(t,n,2),i!==null&&(LOe(n,i,t,e),uC(i,2),Vf(i));break}}t=t.return}}function y5(e,t,n){var i=e.pingCache;if(i===null){i=e.pingCache=new $He;var r=new Set;i.set(t,r)}else r=i.get(t),r===void 0&&(r=new Set,i.set(t,r));r.has(n)||(_7=!0,r.add(n),e=zHe.bind(null,e,t,n),t.then(e,e))}function zHe(e,t,n){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Wr===e&&(Qi&n)===n&&(Xs===4||Xs===3&&(Qi&62914560)===Qi&&300>Zc()-AI?!(ur&2)&&Qx(e,0):j7|=n,Bx===Qi&&(Bx=0)),Vf(e)}function Oke(e,t){t===0&&(t=h1e()),e=zy(e,t),e!==null&&(uC(e,t),Vf(e))}function VHe(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Oke(e,n)}function HHe(e,t){var n=0;switch(e.tag){case 31:case 13:var i=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(xt(314))}i!==null&&i.delete(t),Oke(e,n)}function qHe(e,t){return q9(e,t)}var iN=null,sv=null,c$=!1,rN=!1,v5=!1,Em=0;function Vf(e){e!==sv&&e.next===null&&(sv===null?iN=sv=e:sv=sv.next=e),rN=!0,c$||(c$=!0,KHe())}function gC(e,t){if(!v5&&rN){v5=!0;do for(var n=!1,i=iN;i!==null;){if(e!==0){var r=i.pendingLanes;if(r===0)var s=0;else{var a=i.suspendedLanes,l=i.pingedLanes;s=(1<<31-eu(42|e)+1)-1,s&=r&~(a&~l),s=s&201326741?s&201326741|1:s?s|2:0}s!==0&&(n=!0,mG(i,s))}else s=Qi,s=bI(i,i===Wr?s:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),!(s&3)||cC(i,s)||(n=!0,mG(i,s));i=i.next}while(n);v5=!1}}function WHe(){kke()}function kke(){rN=c$=!1;var e=0;Em!==0&&rqe()&&(e=Em);for(var t=Zc(),n=null,i=iN;i!==null;){var r=i.next,s=Ske(i,t);s===0?(i.next=null,n===null?iN=r:n.next=r,r===null&&(sv=n)):(n=i,(e!==0||s&3)&&(rN=!0)),i=r}Jo!==0&&Jo!==5||gC(e),Em!==0&&(Em=0)}function Ske(e,t){for(var n=e.suspendedLanes,i=e.pingedLanes,r=e.expirationTimes,s=e.pendingLanes&-62914561;0l)break;var d=c.transferSize,f=c.initiatorType;d&&xG(f)&&(c=c.responseEnd,a+=d*(c"u"?null:document;function Ike(e,t,n){var i=Mw;if(i&&typeof t=="string"&&t){var r=ju(t);r='link[rel="'+e+'"][href="'+r+'"]',typeof n=="string"&&(r+='[crossorigin="'+n+'"]'),TG.has(r)||(TG.add(r),e={rel:e,crossOrigin:n,href:t},i.querySelector(r)===null&&(t=i.createElement("link"),Ua(t,"link",e),pa(t),i.head.appendChild(t)))}}function hqe(e){Op.D(e),Ike("dns-prefetch",e,null)}function pqe(e,t){Op.C(e,t),Ike("preconnect",e,t)}function mqe(e,t,n){Op.L(e,t,n);var i=Mw;if(i&&e&&t){var r='link[rel="preload"][as="'+ju(t)+'"]';t==="image"&&n&&n.imageSrcSet?(r+='[imagesrcset="'+ju(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(r+='[imagesizes="'+ju(n.imageSizes)+'"]')):r+='[href="'+ju(e)+'"]';var s=r;switch(t){case"style":s=zx(e);break;case"script":s=Lw(e)}Gu.has(s)||(e=bs({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Gu.set(s,e),i.querySelector(r)!==null||t==="style"&&i.querySelector(bC(s))||t==="script"&&i.querySelector(yC(s))||(t=i.createElement("link"),Ua(t,"link",e),pa(t),i.head.appendChild(t)))}}function gqe(e,t){Op.m(e,t);var n=Mw;if(n&&e){var i=t&&typeof t.as=="string"?t.as:"script",r='link[rel="modulepreload"][as="'+ju(i)+'"][href="'+ju(e)+'"]',s=r;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":s=Lw(e)}if(!Gu.has(s)&&(e=bs({rel:"modulepreload",href:e},t),Gu.set(s,e),n.querySelector(r)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(yC(s)))return}i=n.createElement("link"),Ua(i,"link",e),pa(i),n.head.appendChild(i)}}}function bqe(e,t,n){Op.S(e,t,n);var i=Mw;if(i&&e){var r=Xv(i).hoistableStyles,s=zx(e);t=t||"default";var a=r.get(s);if(!a){var l={loading:0,preload:null};if(a=i.querySelector(bC(s)))l.loading=5;else{e=bs({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Gu.get(s))&&P7(e,n);var c=a=i.createElement("link");pa(c),Ua(c,"link",e),c._p=new Promise(function(u,d){c.onload=u,c.onerror=d}),c.addEventListener("load",function(){l.loading|=1}),c.addEventListener("error",function(){l.loading|=2}),l.loading|=4,T_(a,t,i)}a={type:"stylesheet",instance:a,count:1,state:l},r.set(s,a)}}}function yqe(e,t){Op.X(e,t);var n=Mw;if(n&&e){var i=Xv(n).hoistableScripts,r=Lw(e),s=i.get(r);s||(s=n.querySelector(yC(r)),s||(e=bs({src:e,async:!0},t),(t=Gu.get(r))&&D7(e,t),s=n.createElement("script"),pa(s),Ua(s,"link",e),n.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},i.set(r,s))}}function vqe(e,t){Op.M(e,t);var n=Mw;if(n&&e){var i=Xv(n).hoistableScripts,r=Lw(e),s=i.get(r);s||(s=n.querySelector(yC(r)),s||(e=bs({src:e,async:!0,type:"module"},t),(t=Gu.get(r))&&D7(e,t),s=n.createElement("script"),pa(s),Ua(s,"link",e),n.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},i.set(r,s))}}function AG(e,t,n,i){var r=(r=Pm.current)?aN(r):null;if(!r)throw Error(xt(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=zx(n.href),n=Xv(r).hoistableStyles,i=n.get(t),i||(i={type:"style",instance:null,count:0,state:null},n.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=zx(n.href);var s=Xv(r).hoistableStyles,a=s.get(e);if(a||(r=r.ownerDocument||r,a={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},s.set(e,a),(s=r.querySelector(bC(e)))&&!s._p&&(a.instance=s,a.state.loading=5),Gu.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Gu.set(e,n),s||xqe(r,e,n,a.state))),t&&i===null)throw Error(xt(528,""));return a}if(t&&i!==null)throw Error(xt(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Lw(n),n=Xv(r).hoistableScripts,i=n.get(t),i||(i={type:"script",instance:null,count:0,state:null},n.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(xt(444,e))}}function zx(e){return'href="'+ju(e)+'"'}function bC(e){return'link[rel="stylesheet"]['+e+"]"}function Pke(e){return bs({},e,{"data-precedence":e.precedence,precedence:null})}function xqe(e,t,n,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),Ua(t,"link",n),pa(t),e.head.appendChild(t))}function Lw(e){return'[src="'+ju(e)+'"]'}function yC(e){return"script[async]"+e}function _G(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+ju(n.href)+'"]');if(i)return t.instance=i,pa(i),i;var r=bs({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),pa(i),Ua(i,"style",r),T_(i,n.precedence,e),t.instance=i;case"stylesheet":r=zx(n.href);var s=e.querySelector(bC(r));if(s)return t.state.loading|=4,t.instance=s,pa(s),s;i=Pke(n),(r=Gu.get(r))&&P7(i,r),s=(e.ownerDocument||e).createElement("link"),pa(s);var a=s;return a._p=new Promise(function(l,c){a.onload=l,a.onerror=c}),Ua(s,"link",i),t.state.loading|=4,T_(s,n.precedence,e),t.instance=s;case"script":return s=Lw(n.src),(r=e.querySelector(yC(s)))?(t.instance=r,pa(r),r):(i=n,(r=Gu.get(s))&&(i=bs({},n),D7(i,r)),e=e.ownerDocument||e,r=e.createElement("script"),pa(r),Ua(r,"link",i),e.head.appendChild(r),t.instance=r);case"void":return null;default:throw Error(xt(443,t.type))}else t.type==="stylesheet"&&!(t.state.loading&4)&&(i=t.instance,t.state.loading|=4,T_(i,n.precedence,e));return t.instance}function T_(e,t,n){for(var i=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),r=i.length?i[i.length-1]:null,s=r,a=0;a title"):null)}function wqe(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Dke(e){return!(e.type==="stylesheet"&&!(e.state.loading&3))}function Oqe(e,t,n,i){if(n.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&!(n.state.loading&4)){if(n.instance===null){var r=zx(i.href),s=t.querySelector(bC(r));if(s){t=s._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=lN.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=s,pa(s);return}s=t.ownerDocument||t,i=Pke(i),(r=Gu.get(r))&&P7(i,r),s=s.createElement("link"),pa(s);var a=s;a._p=new Promise(function(l,c){a.onload=l,a.onerror=c}),Ua(s,"link",i),n.instance=s}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=lN.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var E5=0;function kqe(e,t){return e.stylesheets&&e.count===0&&__(e,e.stylesheets),0E5?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(r)}}:null}function lN(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)__(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var cN=null;function __(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,cN=new Map,t.forEach(Sqe,e),cN=null,lN.call(e))}function Sqe(e,t){if(!(t.state.loading&4)){var n=cN.get(e);if(n)var i=n.get(null);else{n=new Map,cN.set(e,n);for(var r=e.querySelectorAll("link[data-precedence],style[data-precedence]"),s=0;s"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(zke)}catch(e){console.error(e)}}zke(),Ywe.exports=mI;var Rqe=Ywe.exports;const Iqe=_w(Rqe),B7=p.createContext({});function II(e){const t=p.useRef(null);return t.current===null&&(t.current=e()),t.current}const PI=p.createContext(null),$S=p.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});class Pqe extends p.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const i=this.props.sizeRef.current;i.height=n.offsetHeight||0,i.width=n.offsetWidth||0,i.top=n.offsetTop,i.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function Dqe({children:e,isPresent:t}){const n=p.useId(),i=p.useRef(null),r=p.useRef({width:0,height:0,top:0,left:0}),{nonce:s}=p.useContext($S);return p.useInsertionEffect(()=>{const{width:a,height:l,top:c,left:u}=r.current;if(t||!i.current||!a||!l)return;i.current.dataset.motionPopId=n;const d=document.createElement("style");return s&&(d.nonce=s),document.head.appendChild(d),d.sheet&&d.sheet.insertRule(`
+`+i.stack}}var R6=Object.prototype.hasOwnProperty,H9=na.unstable_scheduleCallback,WM=na.unstable_cancelCallback,uVe=na.unstable_shouldYield,dVe=na.unstable_requestPaint,Zc=na.unstable_now,fVe=na.unstable_getCurrentPriorityLevel,c1e=na.unstable_ImmediatePriority,u1e=na.unstable_UserBlockingPriority,Bj=na.unstable_NormalPriority,hVe=na.unstable_LowPriority,d1e=na.unstable_IdlePriority,pVe=na.log,mVe=na.unstable_setDisableYieldValue,lC=null,Jc=null;function wm(e){if(typeof pVe=="function"&&mVe(e),Jc&&typeof Jc.setStrictMode=="function")try{Jc.setStrictMode(lC,e)}catch{}}var eu=Math.clz32?Math.clz32:yVe,gVe=Math.log,bVe=Math.LN2;function yVe(e){return e>>>=0,e===0?32:31-(gVe(e)/bVe|0)|0}var o2=256,a2=262144,l2=4194304;function hb(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function bI(e,t,n){var i=e.pendingLanes;if(i===0)return 0;var r=0,s=e.suspendedLanes,a=e.pingedLanes;e=e.warmLanes;var l=i&134217727;return l!==0?(i=l&~s,i!==0?r=hb(i):(a&=l,a!==0?r=hb(a):n||(n=l&~e,n!==0&&(r=hb(n))))):(l=i&~s,l!==0?r=hb(l):a!==0?r=hb(a):n||(n=i&~e,n!==0&&(r=hb(n)))),r===0?0:t!==0&&t!==r&&!(t&s)&&(s=r&-r,n=t&-t,s>=n||s===32&&(n&4194048)!==0)?t:r}function cC(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function vVe(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function f1e(){var e=l2;return l2<<=1,!(l2&62914560)&&(l2=4194304),e}function KM(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function uC(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function xVe(e,t,n,i,r,s){var a=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,c=e.expirationTimes,u=e.hiddenUpdates;for(n=a&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var CVe=/[\n"\\]/g;function ju(e){return e.replace(CVe,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function D6(e,t,n,i,r,s,a,l){e.name="",a!=null&&typeof a!="function"&&typeof a!="symbol"&&typeof a!="boolean"?e.type=a:e.removeAttribute("type"),t!=null?a==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Eu(t)):e.value!==""+Eu(t)&&(e.value=""+Eu(t)):a!=="submit"&&a!=="reset"||e.removeAttribute("value"),t!=null?M6(e,a,Eu(t)):n!=null?M6(e,a,Eu(n)):i!=null&&e.removeAttribute("value"),r==null&&s!=null&&(e.defaultChecked=!!s),r!=null&&(e.checked=r&&typeof r!="function"&&typeof r!="symbol"),l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"?e.name=""+Eu(l):e.removeAttribute("name")}function w1e(e,t,n,i,r,s,a,l){if(s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(e.type=s),t!=null||n!=null){if(!(s!=="submit"&&s!=="reset"||t!=null)){P6(e);return}n=n!=null?""+Eu(n):"",t=t!=null?""+Eu(t):n,l||t===e.value||(e.value=t),e.defaultValue=t}i=i??r,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=l?e.checked:!!i,e.defaultChecked=!!i,a!=null&&typeof a!="function"&&typeof a!="symbol"&&typeof a!="boolean"&&(e.name=a),P6(e)}function M6(e,t,n){t==="number"&&Uj(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Yv(e,t,n,i){if(e=e.options,t){t={};for(var r=0;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),$6=!1;if(np)try{var X1={};Object.defineProperty(X1,"passive",{get:function(){$6=!0}}),window.addEventListener("test",X1,X1),window.removeEventListener("test",X1,X1)}catch{$6=!1}var Om=null,Y9=null,y_=null;function C1e(){if(y_)return y_;var e,t=Y9,n=t.length,i,r="value"in Om?Om.value:Om.textContent,s=r.length;for(e=0;e=Sk),TK=" ",AK=!1;function A1e(e,t){switch(e){case"keyup":return eHe.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _1e(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Sv=!1;function nHe(e,t){switch(e){case"compositionend":return _1e(t);case"keypress":return t.which!==32?null:(AK=!0,TK);case"textInput":return e=t.data,e===TK&&AK?null:e;default:return null}}function iHe(e,t){if(Sv)return e==="compositionend"||!J9&&A1e(e,t)?(e=C1e(),y_=Y9=Om=null,Sv=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=i}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=IK(n)}}function I1e(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?I1e(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function P1e(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Uj(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Uj(e.document)}return t}function e7(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var dHe=np&&"documentMode"in document&&11>=document.documentMode,Ev=null,F6=null,Ck=null,B6=!1;function DK(e,t,n){var i=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;B6||Ev==null||Ev!==Uj(i)||(i=Ev,"selectionStart"in i&&e7(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Ck&&TS(Ck,i)||(Ck=i,i=sN(F6,"onSelect"),0>=a,r-=a,wf=1<<32-eu(t)+r|n<E?(R=C,C=null):R=C.sibling;var A=h(y,C,x[E],O);if(A===null){C===null&&(C=R);break}e&&C&&A.alternate===null&&t(y,C),w=s(A,w,E),k===null?S=A:k.sibling=A,k=A,C=R}if(E===x.length)return n(y,C),Ki&&Eh(y,E),S;if(C===null){for(;EE?(R=C,C=null):R=C.sibling;var j=h(y,C,A.value,O);if(j===null){C===null&&(C=R);break}e&&C&&j.alternate===null&&t(y,C),w=s(j,w,E),k===null?S=j:k.sibling=j,k=j,C=R}if(A.done)return n(y,C),Ki&&Eh(y,E),S;if(C===null){for(;!A.done;E++,A=x.next())A=f(y,A.value,O),A!==null&&(w=s(A,w,E),k===null?S=A:k.sibling=A,k=A);return Ki&&Eh(y,E),S}for(C=i(C);!A.done;E++,A=x.next())A=m(C,y,E,A.value,O),A!==null&&(e&&A.alternate!==null&&C.delete(A.key===null?E:A.key),w=s(A,w,E),k===null?S=A:k.sibling=A,k=A);return e&&C.forEach(function(T){return t(y,T)}),Ki&&Eh(y,E),S}function v(y,w,x,O){if(typeof x=="object"&&x!==null&&x.type===xv&&x.key===null&&(x=x.props.children),typeof x=="object"&&x!==null){switch(x.$$typeof){case s2:e:{for(var S=x.key;w!==null;){if(w.key===S){if(S=x.type,S===xv){if(w.tag===7){n(y,w.sibling),O=r(w,x.props.children),O.return=y,y=O;break e}}else if(w.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===sm&&pb(S)===w.type){n(y,w.sibling),O=r(w,x.props),Z1(O,x),O.return=y,y=O;break e}n(y,w);break}else t(y,w);w=w.sibling}x.type===xv?(O=Xb(x.props.children,y.mode,O,x.key),O.return=y,y=O):(O=x_(x.type,x.key,x.props,null,y.mode,O),Z1(O,x),O.return=y,y=O)}return a(y);case HO:e:{for(S=x.key;w!==null;){if(w.key===S)if(w.tag===4&&w.stateNode.containerInfo===x.containerInfo&&w.stateNode.implementation===x.implementation){n(y,w.sibling),O=r(w,x.children||[]),O.return=y,y=O;break e}else{n(y,w);break}else t(y,w);w=w.sibling}O=i5(x,y.mode,O),O.return=y,y=O}return a(y);case sm:return x=pb(x),v(y,w,x,O)}if(qO(x))return g(y,w,x,O);if(G1(x)){if(S=G1(x),typeof S!="function")throw Error(xt(150));return x=S.call(x),b(y,w,x,O)}if(typeof x.then=="function")return v(y,w,f2(x),O);if(x.$$typeof===Dh)return v(y,w,d2(y,x),O);h2(y,x)}return typeof x=="string"&&x!==""||typeof x=="number"||typeof x=="bigint"?(x=""+x,w!==null&&w.tag===6?(n(y,w.sibling),O=r(w,x),O.return=y,y=O):(n(y,w),O=n5(x,y.mode,O),O.return=y,y=O),a(y)):n(y,w)}return function(y,w,x,O){try{jS=0;var S=v(y,w,x,O);return ex=null,S}catch(C){if(C===Pw||C===kI)throw C;var k=qc(29,C,null,y.mode);return k.lanes=O,k.return=y,k}finally{}}}var fy=G1e(!0),X1e=G1e(!1),om=!1;function c7(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function W6(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Mm(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Lm(e,t,n){var i=e.updateQueue;if(i===null)return null;if(i=i.shared,ur&2){var r=i.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),i.pending=t,t=zj(e),U1e(e,null,n),t}return OI(e,i,t,n),zj(e)}function Ak(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,p1e(e,n)}}function s5(e,t){var n=e.updateQueue,i=e.alternate;if(i!==null&&(i=i.updateQueue,n===i)){var r=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var a={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};s===null?r=s=a:s=s.next=a,n=n.next}while(n!==null);s===null?r=s=t:s=s.next=t}else r=s=t;n={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:s,shared:i.shared,callbacks:i.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var K6=!1;function _k(){if(K6){var e=Jv;if(e!==null)throw e}}function jk(e,t,n,i){K6=!1;var r=e.updateQueue;om=!1;var s=r.firstBaseUpdate,a=r.lastBaseUpdate,l=r.shared.pending;if(l!==null){r.shared.pending=null;var c=l,u=c.next;c.next=null,a===null?s=u:a.next=u,a=c;var d=e.alternate;d!==null&&(d=d.updateQueue,l=d.lastBaseUpdate,l!==a&&(l===null?d.firstBaseUpdate=u:l.next=u,d.lastBaseUpdate=c))}if(s!==null){var f=r.baseState;a=0,d=u=c=null,l=s;do{var h=l.lane&-536870913,m=h!==l.lane;if(m?(Qi&h)===h:(i&h)===h){h!==0&&h===Lx&&(K6=!0),d!==null&&(d=d.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var g=e,b=l;h=t;var v=n;switch(b.tag){case 1:if(g=b.payload,typeof g=="function"){f=g.call(v,f,h);break e}f=g;break e;case 3:g.flags=g.flags&-65537|128;case 0:if(g=b.payload,h=typeof g=="function"?g.call(v,f,h):g,h==null)break e;f=bs({},f,h);break e;case 2:om=!0}}h=l.callback,h!==null&&(e.flags|=64,m&&(e.flags|=8192),m=r.callbacks,m===null?r.callbacks=[h]:m.push(h))}else m={lane:h,tag:l.tag,payload:l.payload,callback:l.callback,next:null},d===null?(u=d=m,c=f):d=d.next=m,a|=h;if(l=l.next,l===null){if(l=r.shared.pending,l===null)break;m=l,l=m.next,m.next=null,r.lastBaseUpdate=m,r.shared.pending=null}}while(!0);d===null&&(c=f),r.baseState=c,r.firstBaseUpdate=u,r.lastBaseUpdate=d,s===null&&(r.shared.lanes=0),tg|=a,e.lanes=a,e.memoizedState=f}}function Y1e(e,t){if(typeof e!="function")throw Error(xt(191,e));e.call(t)}function Z1e(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;es?s:8;var a=zn.T,l={};zn.T=l,O7(e,!1,t,n);try{var c=r(),u=zn.S;if(u!==null&&u(l,c),c!==null&&typeof c=="object"&&typeof c.then=="function"){var d=xHe(c,i);Nk(e,t,d,tu(e))}else Nk(e,t,i,tu(e))}catch(f){Nk(e,t,{then:function(){},status:"rejected",reason:f},tu())}finally{dr.p=s,a!==null&&l.types!==null&&(a.types=l.types),zn.T=a}}function CHe(){}function J6(e,t,n,i){if(e.tag!==5)throw Error(xt(476));var r=kOe(e).queue;OOe(e,r,t,Gb,n===null?CHe:function(){return SOe(e),n(i)})}function kOe(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Gb,baseState:Gb,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rp,lastRenderedState:Gb},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rp,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function SOe(e){var t=kOe(e);t.next===null&&(t=e.alternate.memoizedState),Nk(e,t.next.queue,{},tu())}function w7(){return Ba(DS)}function EOe(){return vo().memoizedState}function COe(){return vo().memoizedState}function THe(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=tu();e=Mm(n);var i=Lm(t,e,n);i!==null&&(uc(i,t,n),Ak(i,t,n)),t={cache:o7()},e.payload=t;return}t=t.return}}function AHe(e,t,n){var i=tu();n={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},TI(e)?AOe(t,n):(n=n7(e,t,n,i),n!==null&&(uc(n,e,i),_Oe(n,t,i)))}function TOe(e,t,n){var i=tu();Nk(e,t,n,i)}function Nk(e,t,n,i){var r={lane:i,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(TI(e))AOe(t,r);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var a=t.lastRenderedState,l=s(a,n);if(r.hasEagerState=!0,r.eagerState=l,lu(l,a))return OI(e,t,r,0),Wr===null&&wI(),!1}catch{}finally{}if(n=n7(e,t,r,i),n!==null)return uc(n,e,i),_Oe(n,t,i),!0}return!1}function O7(e,t,n,i){if(i={lane:2,revertLane:N7(),gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},TI(e)){if(t)throw Error(xt(479))}else t=n7(e,n,i,2),t!==null&&uc(t,e,2)}function TI(e){var t=e.alternate;return e===gi||t!==null&&t===gi}function AOe(e,t){tx=Gj=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function _Oe(e,t,n){if(n&4194048){var i=t.lanes;i&=e.pendingLanes,n|=i,t.lanes=n,p1e(e,n)}}var RS={readContext:Ba,use:EI,useCallback:Ks,useContext:Ks,useEffect:Ks,useImperativeHandle:Ks,useLayoutEffect:Ks,useInsertionEffect:Ks,useMemo:Ks,useReducer:Ks,useRef:Ks,useState:Ks,useDebugValue:Ks,useDeferredValue:Ks,useTransition:Ks,useSyncExternalStore:Ks,useId:Ks,useHostTransitionStatus:Ks,useFormState:Ks,useActionState:Ks,useOptimistic:Ks,useMemoCache:Ks,useCacheRefresh:Ks};RS.useEffectEvent=Ks;var jOe={readContext:Ba,use:EI,useCallback:function(e,t){return wl().memoizedState=[e,t===void 0?null:t],e},useContext:Ba,useEffect:XK,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,k_(4194308,4,bOe.bind(null,t,e),n)},useLayoutEffect:function(e,t){return k_(4194308,4,e,t)},useInsertionEffect:function(e,t){k_(4,2,e,t)},useMemo:function(e,t){var n=wl();t=t===void 0?null:t;var i=e();if(hy){wm(!0);try{e()}finally{wm(!1)}}return n.memoizedState=[i,t],i},useReducer:function(e,t,n){var i=wl();if(n!==void 0){var r=n(t);if(hy){wm(!0);try{n(t)}finally{wm(!1)}}}else r=t;return i.memoizedState=i.baseState=r,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},i.queue=e,e=e.dispatch=AHe.bind(null,gi,e),[i.memoizedState,e]},useRef:function(e){var t=wl();return e={current:e},t.memoizedState=e},useState:function(e){e=Y6(e);var t=e.queue,n=TOe.bind(null,gi,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:v7,useDeferredValue:function(e,t){var n=wl();return x7(n,e,t)},useTransition:function(){var e=Y6(!1);return e=OOe.bind(null,gi,e.queue,!0,!1),wl().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var i=gi,r=wl();if(Ki){if(n===void 0)throw Error(xt(407));n=n()}else{if(n=t(),Wr===null)throw Error(xt(349));Qi&127||iOe(i,t,n)}r.memoizedState=n;var s={value:n,getSnapshot:t};return r.queue=s,XK(sOe.bind(null,i,s,e),[e]),i.flags|=2048,Fx(9,{destroy:void 0},rOe.bind(null,i,s,n,t),null),n},useId:function(){var e=wl(),t=Wr.identifierPrefix;if(Ki){var n=Of,i=wf;n=(i&~(1<<32-eu(i)-1)).toString(32)+n,t="_"+t+"R_"+n,n=Xj++,0<\/script>",s=s.removeChild(s.firstChild);break;case"select":s=typeof i.is=="string"?a.createElement("select",{is:i.is}):a.createElement("select"),i.multiple?s.multiple=!0:i.size&&(s.size=i.size);break;default:s=typeof i.is=="string"?a.createElement(r,{is:i.is}):a.createElement(r)}}s[La]=t,s[fc]=i;e:for(a=t.child;a!==null;){if(a.tag===5||a.tag===6)s.appendChild(a.stateNode);else if(a.tag!==4&&a.tag!==27&&a.child!==null){a.child.return=a,a=a.child;continue}if(a===t)break e;for(;a.sibling===null;){if(a.return===null||a.return===t)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}t.stateNode=s;e:switch(Ua(s,r,i),r){case"button":case"input":case"select":case"textarea":i=!!i.autoFocus;break e;case"img":i=!0;break e;default:i=!1}i&&ah(t)}}return ls(t),h5(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==i&&ah(t);else{if(typeof i!="string"&&t.stateNode===null)throw Error(xt(166));if(e=Pm.current,R0(t)){if(e=t.stateNode,n=t.memoizedProps,i=null,r=$a,r!==null)switch(r.tag){case 27:case 5:i=r.memoizedProps}e[La]=t,e=!!(e.nodeValue===n||i!==null&&i.suppressHydrationWarning===!0||Tke(e.nodeValue,n)),e||Jm(t,!0)}else e=oN(e).createTextNode(i),e[La]=t,t.stateNode=e}return ls(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(i=R0(t),n!==null){if(e===null){if(!i)throw Error(xt(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(xt(557));e[La]=t}else uy(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ls(t),e=!1}else n=r5(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Hc(t),t):(Hc(t),null);if(t.flags&128)throw Error(xt(558))}return ls(t),null;case 13:if(i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(r=R0(t),i!==null&&i.dehydrated!==null){if(e===null){if(!r)throw Error(xt(318));if(r=t.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(xt(317));r[La]=t}else uy(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ls(t),r=!1}else r=r5(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),r=!0;if(!r)return t.flags&256?(Hc(t),t):(Hc(t),null)}return Hc(t),t.flags&128?(t.lanes=n,t):(n=i!==null,e=e!==null&&e.memoizedState!==null,n&&(i=t.child,r=null,i.alternate!==null&&i.alternate.memoizedState!==null&&i.alternate.memoizedState.cachePool!==null&&(r=i.alternate.memoizedState.cachePool.pool),s=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(s=i.memoizedState.cachePool.pool),s!==r&&(i.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),p2(t,t.updateQueue),ls(t),null);case 4:return Px(),e===null&&R7(t.stateNode.containerInfo),ls(t),null;case 10:return Qh(t.type),ls(t),null;case 19:if(xa(go),i=t.memoizedState,i===null)return ls(t),null;if(r=(t.flags&128)!==0,s=i.rendering,s===null)if(r)J1(i,!1);else{if(Ys!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(s=Kj(e),s!==null){for(t.flags|=128,J1(i,!1),e=s.updateQueue,t.updateQueue=e,p2(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Q1e(n,e),n=n.sibling;return ts(go,go.current&1|2),Ki&&Eh(t,i.treeForkCount),t.child}e=e.sibling}i.tail!==null&&Zc()>eN&&(t.flags|=128,r=!0,J1(i,!1),t.lanes=4194304)}else{if(!r)if(e=Kj(s),e!==null){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,p2(t,e),J1(i,!0),i.tail===null&&i.tailMode==="hidden"&&!s.alternate&&!Ki)return ls(t),null}else 2*Zc()-i.renderingStartTime>eN&&n!==536870912&&(t.flags|=128,r=!0,J1(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(e=i.last,e!==null?e.sibling=s:t.child=s,i.last=s)}return i.tail!==null?(e=i.tail,i.rendering=e,i.tail=e.sibling,i.renderingStartTime=Zc(),e.sibling=null,n=go.current,ts(go,r?n&1|2:n&1),Ki&&Eh(t,i.treeForkCount),e):(ls(t),null);case 22:case 23:return Hc(t),u7(),i=t.memoizedState!==null,e!==null?e.memoizedState!==null!==i&&(t.flags|=8192):i&&(t.flags|=8192),i?n&536870912&&!(t.flags&128)&&(ls(t),t.subtreeFlags&6&&(t.flags|=8192)):ls(t),n=t.updateQueue,n!==null&&p2(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),i=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),i!==n&&(t.flags|=2048),e!==null&&xa(Yb),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Qh(Po),ls(t),null;case 25:return null;case 30:return null}throw Error(xt(156,t.tag))}function IHe(e,t){switch(s7(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Qh(Po),Px(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Fj(t),null;case 31:if(t.memoizedState!==null){if(Hc(t),t.alternate===null)throw Error(xt(340));uy()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Hc(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(xt(340));uy()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return xa(go),null;case 4:return Px(),null;case 10:return Qh(t.type),null;case 22:case 23:return Hc(t),u7(),e!==null&&xa(Yb),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Qh(Po),null;case 25:return null;default:return null}}function QOe(e,t){switch(s7(t),t.tag){case 3:Qh(Po),Px();break;case 26:case 27:case 5:Fj(t);break;case 4:Px();break;case 31:t.memoizedState!==null&&Hc(t);break;case 13:Hc(t);break;case 19:xa(go);break;case 10:Qh(t.type);break;case 22:case 23:Hc(t),u7(),e!==null&&xa(Yb);break;case 24:Qh(Po)}}function mC(e,t){try{var n=t.updateQueue,i=n!==null?n.lastEffect:null;if(i!==null){var r=i.next;n=r;do{if((n.tag&e)===e){i=void 0;var s=n.create,a=n.inst;i=s(),a.destroy=i}n=n.next}while(n!==r)}}catch(l){Er(t,t.return,l)}}function eg(e,t,n){try{var i=t.updateQueue,r=i!==null?i.lastEffect:null;if(r!==null){var s=r.next;i=s;do{if((i.tag&e)===e){var a=i.inst,l=a.destroy;if(l!==void 0){a.destroy=void 0,r=t;var c=n,u=l;try{u()}catch(d){Er(r,c,d)}}}i=i.next}while(i!==s)}}catch(d){Er(t,t.return,d)}}function zOe(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Z1e(t,n)}catch(i){Er(e,e.return,i)}}}function VOe(e,t,n){n.props=py(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(i){Er(e,t,i)}}function Rk(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var i=e.stateNode;break;case 30:i=e.stateNode;break;default:i=e.stateNode}typeof n=="function"?e.refCleanup=n(i):n.current=i}}catch(r){Er(e,t,r)}}function kf(e,t){var n=e.ref,i=e.refCleanup;if(n!==null)if(typeof i=="function")try{i()}catch(r){Er(e,t,r)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(r){Er(e,t,r)}else n.current=null}function HOe(e){var t=e.type,n=e.memoizedProps,i=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&i.focus();break e;case"img":n.src?i.src=n.src:n.srcSet&&(i.srcset=n.srcSet)}}catch(r){Er(e,e.return,r)}}function p5(e,t,n){try{var i=e.stateNode;tqe(i,e.type,n,t),i[fc]=t}catch(r){Er(e,e.return,r)}}function qOe(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Tg(e.type)||e.tag===4}function m5(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||qOe(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Tg(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function r$(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Mh));else if(i!==4&&(i===27&&Tg(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(r$(e,t,n),e=e.sibling;e!==null;)r$(e,t,n),e=e.sibling}function Jj(e,t,n){var i=e.tag;if(i===5||i===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(i!==4&&(i===27&&Tg(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Jj(e,t,n),e=e.sibling;e!==null;)Jj(e,t,n),e=e.sibling}function WOe(e){var t=e.stateNode,n=e.memoizedProps;try{for(var i=e.type,r=t.attributes;r.length;)t.removeAttributeNode(r[0]);Ua(t,i,n),t[La]=e,t[fc]=n}catch(s){Er(e,e.return,s)}}var jh=!1,Io=!1,g5=!1,cG=typeof WeakSet=="function"?WeakSet:Set,fa=null;function PHe(e,t){if(e=e.containerInfo,d$=uN,e=P1e(e),e7(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var r=i.anchorOffset,s=i.focusNode;i=i.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var a=0,l=-1,c=-1,u=0,d=0,f=e,h=null;t:for(;;){for(var m;f!==n||r!==0&&f.nodeType!==3||(l=a+r),f!==s||i!==0&&f.nodeType!==3||(c=a+i),f.nodeType===3&&(a+=f.nodeValue.length),(m=f.firstChild)!==null;)h=f,f=m;for(;;){if(f===e)break t;if(h===n&&++u===r&&(l=a),h===s&&++d===i&&(c=a),(m=f.nextSibling)!==null)break;f=h,h=f.parentNode}f=m}n=l===-1||c===-1?null:{start:l,end:c}}else n=null}n=n||{start:0,end:0}}else n=null;for(f$={focusedElem:e,selectionRange:n},uN=!1,fa=t;fa!==null;)if(t=fa,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,fa=e;else for(;fa!==null;){switch(t=fa,s=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),Ua(s,i,n),s[La]=e,pa(s),i=s;break e;case"link":var a=_G("link","href",r).get(i+(n.href||""));if(a){for(var l=0;lv&&(a=v,v=b,b=a);var y=PK(l,b),w=PK(l,v);if(y&&w&&(m.rangeCount!==1||m.anchorNode!==y.node||m.anchorOffset!==y.offset||m.focusNode!==w.node||m.focusOffset!==w.offset)){var x=f.createRange();x.setStart(y.node,y.offset),m.removeAllRanges(),b>v?(m.addRange(x),m.extend(w.node,w.offset)):(x.setEnd(w.node,w.offset),m.addRange(x))}}}}for(f=[],m=l;m=m.parentNode;)m.nodeType===1&&f.push({element:m,left:m.scrollLeft,top:m.scrollTop});for(typeof l.focus=="function"&&l.focus(),l=0;ln?32:n,zn.T=null,n=a$,a$=null;var s=Fm,a=zh;if(Jo=0,Ux=Fm=null,zh=0,ur&6)throw Error(xt(331));var l=ur;if(ur|=4,rke(s.current),tke(s,s.current,a,n),ur=l,gC(0,!1),Jc&&typeof Jc.onPostCommitFiberRoot=="function")try{Jc.onPostCommitFiberRoot(lC,s)}catch{}return!0}finally{dr.p=r,zn.T=i,vke(e,t)}}function hG(e,t,n){t=Nu(n,t),t=t$(e.stateNode,t,2),e=Lm(e,t,2),e!==null&&(uC(e,2),Vf(e))}function Er(e,t,n){if(e.tag===3)hG(e,e,n);else for(;t!==null;){if(t.tag===3){hG(t,e,n);break}else if(t.tag===1){var i=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof i.componentDidCatch=="function"&&($m===null||!$m.has(i))){e=Nu(n,e),n=DOe(2),i=Lm(t,n,2),i!==null&&(MOe(n,i,t,e),uC(i,2),Vf(i));break}}t=t.return}}function y5(e,t,n){var i=e.pingCache;if(i===null){i=e.pingCache=new LHe;var r=new Set;i.set(t,r)}else r=i.get(t),r===void 0&&(r=new Set,i.set(t,r));r.has(n)||(A7=!0,r.add(n),e=QHe.bind(null,e,t,n),t.then(e,e))}function QHe(e,t,n){var i=e.pingCache;i!==null&&i.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Wr===e&&(Qi&n)===n&&(Ys===4||Ys===3&&(Qi&62914560)===Qi&&300>Zc()-AI?!(ur&2)&&Qx(e,0):_7|=n,Bx===Qi&&(Bx=0)),Vf(e)}function wke(e,t){t===0&&(t=f1e()),e=zy(e,t),e!==null&&(uC(e,t),Vf(e))}function zHe(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),wke(e,n)}function VHe(e,t){var n=0;switch(e.tag){case 31:case 13:var i=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:i=e.stateNode;break;case 22:i=e.stateNode._retryCache;break;default:throw Error(xt(314))}i!==null&&i.delete(t),wke(e,n)}function HHe(e,t){return H9(e,t)}var iN=null,sv=null,c$=!1,rN=!1,v5=!1,Em=0;function Vf(e){e!==sv&&e.next===null&&(sv===null?iN=sv=e:sv=sv.next=e),rN=!0,c$||(c$=!0,WHe())}function gC(e,t){if(!v5&&rN){v5=!0;do for(var n=!1,i=iN;i!==null;){if(e!==0){var r=i.pendingLanes;if(r===0)var s=0;else{var a=i.suspendedLanes,l=i.pingedLanes;s=(1<<31-eu(42|e)+1)-1,s&=r&~(a&~l),s=s&201326741?s&201326741|1:s?s|2:0}s!==0&&(n=!0,pG(i,s))}else s=Qi,s=bI(i,i===Wr?s:0,i.cancelPendingCommit!==null||i.timeoutHandle!==-1),!(s&3)||cC(i,s)||(n=!0,pG(i,s));i=i.next}while(n);v5=!1}}function qHe(){Oke()}function Oke(){rN=c$=!1;var e=0;Em!==0&&iqe()&&(e=Em);for(var t=Zc(),n=null,i=iN;i!==null;){var r=i.next,s=kke(i,t);s===0?(i.next=null,n===null?iN=r:n.next=r,r===null&&(sv=n)):(n=i,(e!==0||s&3)&&(rN=!0)),i=r}Jo!==0&&Jo!==5||gC(e),Em!==0&&(Em=0)}function kke(e,t){for(var n=e.suspendedLanes,i=e.pingedLanes,r=e.expirationTimes,s=e.pendingLanes&-62914561;0l)break;var d=c.transferSize,f=c.initiatorType;d&&vG(f)&&(c=c.responseEnd,a+=d*(c"u"?null:document;function Rke(e,t,n){var i=Mw;if(i&&typeof t=="string"&&t){var r=ju(t);r='link[rel="'+e+'"][href="'+r+'"]',typeof n=="string"&&(r+='[crossorigin="'+n+'"]'),CG.has(r)||(CG.add(r),e={rel:e,crossOrigin:n,href:t},i.querySelector(r)===null&&(t=i.createElement("link"),Ua(t,"link",e),pa(t),i.head.appendChild(t)))}}function fqe(e){Op.D(e),Rke("dns-prefetch",e,null)}function hqe(e,t){Op.C(e,t),Rke("preconnect",e,t)}function pqe(e,t,n){Op.L(e,t,n);var i=Mw;if(i&&e&&t){var r='link[rel="preload"][as="'+ju(t)+'"]';t==="image"&&n&&n.imageSrcSet?(r+='[imagesrcset="'+ju(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(r+='[imagesizes="'+ju(n.imageSizes)+'"]')):r+='[href="'+ju(e)+'"]';var s=r;switch(t){case"style":s=zx(e);break;case"script":s=Lw(e)}Gu.has(s)||(e=bs({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Gu.set(s,e),i.querySelector(r)!==null||t==="style"&&i.querySelector(bC(s))||t==="script"&&i.querySelector(yC(s))||(t=i.createElement("link"),Ua(t,"link",e),pa(t),i.head.appendChild(t)))}}function mqe(e,t){Op.m(e,t);var n=Mw;if(n&&e){var i=t&&typeof t.as=="string"?t.as:"script",r='link[rel="modulepreload"][as="'+ju(i)+'"][href="'+ju(e)+'"]',s=r;switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":s=Lw(e)}if(!Gu.has(s)&&(e=bs({rel:"modulepreload",href:e},t),Gu.set(s,e),n.querySelector(r)===null)){switch(i){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(yC(s)))return}i=n.createElement("link"),Ua(i,"link",e),pa(i),n.head.appendChild(i)}}}function gqe(e,t,n){Op.S(e,t,n);var i=Mw;if(i&&e){var r=Xv(i).hoistableStyles,s=zx(e);t=t||"default";var a=r.get(s);if(!a){var l={loading:0,preload:null};if(a=i.querySelector(bC(s)))l.loading=5;else{e=bs({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Gu.get(s))&&I7(e,n);var c=a=i.createElement("link");pa(c),Ua(c,"link",e),c._p=new Promise(function(u,d){c.onload=u,c.onerror=d}),c.addEventListener("load",function(){l.loading|=1}),c.addEventListener("error",function(){l.loading|=2}),l.loading|=4,T_(a,t,i)}a={type:"stylesheet",instance:a,count:1,state:l},r.set(s,a)}}}function bqe(e,t){Op.X(e,t);var n=Mw;if(n&&e){var i=Xv(n).hoistableScripts,r=Lw(e),s=i.get(r);s||(s=n.querySelector(yC(r)),s||(e=bs({src:e,async:!0},t),(t=Gu.get(r))&&P7(e,t),s=n.createElement("script"),pa(s),Ua(s,"link",e),n.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},i.set(r,s))}}function yqe(e,t){Op.M(e,t);var n=Mw;if(n&&e){var i=Xv(n).hoistableScripts,r=Lw(e),s=i.get(r);s||(s=n.querySelector(yC(r)),s||(e=bs({src:e,async:!0,type:"module"},t),(t=Gu.get(r))&&P7(e,t),s=n.createElement("script"),pa(s),Ua(s,"link",e),n.head.appendChild(s)),s={type:"script",instance:s,count:1,state:null},i.set(r,s))}}function TG(e,t,n,i){var r=(r=Pm.current)?aN(r):null;if(!r)throw Error(xt(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=zx(n.href),n=Xv(r).hoistableStyles,i=n.get(t),i||(i={type:"style",instance:null,count:0,state:null},n.set(t,i)),i):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=zx(n.href);var s=Xv(r).hoistableStyles,a=s.get(e);if(a||(r=r.ownerDocument||r,a={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},s.set(e,a),(s=r.querySelector(bC(e)))&&!s._p&&(a.instance=s,a.state.loading=5),Gu.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Gu.set(e,n),s||vqe(r,e,n,a.state))),t&&i===null)throw Error(xt(528,""));return a}if(t&&i!==null)throw Error(xt(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Lw(n),n=Xv(r).hoistableScripts,i=n.get(t),i||(i={type:"script",instance:null,count:0,state:null},n.set(t,i)),i):{type:"void",instance:null,count:0,state:null};default:throw Error(xt(444,e))}}function zx(e){return'href="'+ju(e)+'"'}function bC(e){return'link[rel="stylesheet"]['+e+"]"}function Ike(e){return bs({},e,{"data-precedence":e.precedence,precedence:null})}function vqe(e,t,n,i){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?i.loading=1:(t=e.createElement("link"),i.preload=t,t.addEventListener("load",function(){return i.loading|=1}),t.addEventListener("error",function(){return i.loading|=2}),Ua(t,"link",n),pa(t),e.head.appendChild(t))}function Lw(e){return'[src="'+ju(e)+'"]'}function yC(e){return"script[async]"+e}function AG(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var i=e.querySelector('style[data-href~="'+ju(n.href)+'"]');if(i)return t.instance=i,pa(i),i;var r=bs({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return i=(e.ownerDocument||e).createElement("style"),pa(i),Ua(i,"style",r),T_(i,n.precedence,e),t.instance=i;case"stylesheet":r=zx(n.href);var s=e.querySelector(bC(r));if(s)return t.state.loading|=4,t.instance=s,pa(s),s;i=Ike(n),(r=Gu.get(r))&&I7(i,r),s=(e.ownerDocument||e).createElement("link"),pa(s);var a=s;return a._p=new Promise(function(l,c){a.onload=l,a.onerror=c}),Ua(s,"link",i),t.state.loading|=4,T_(s,n.precedence,e),t.instance=s;case"script":return s=Lw(n.src),(r=e.querySelector(yC(s)))?(t.instance=r,pa(r),r):(i=n,(r=Gu.get(s))&&(i=bs({},n),P7(i,r)),e=e.ownerDocument||e,r=e.createElement("script"),pa(r),Ua(r,"link",i),e.head.appendChild(r),t.instance=r);case"void":return null;default:throw Error(xt(443,t.type))}else t.type==="stylesheet"&&!(t.state.loading&4)&&(i=t.instance,t.state.loading|=4,T_(i,n.precedence,e));return t.instance}function T_(e,t,n){for(var i=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),r=i.length?i[i.length-1]:null,s=r,a=0;a title"):null)}function xqe(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Pke(e){return!(e.type==="stylesheet"&&!(e.state.loading&3))}function wqe(e,t,n,i){if(n.type==="stylesheet"&&(typeof i.media!="string"||matchMedia(i.media).matches!==!1)&&!(n.state.loading&4)){if(n.instance===null){var r=zx(i.href),s=t.querySelector(bC(r));if(s){t=s._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=lN.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=s,pa(s);return}s=t.ownerDocument||t,i=Ike(i),(r=Gu.get(r))&&I7(i,r),s=s.createElement("link"),pa(s);var a=s;a._p=new Promise(function(l,c){a.onload=l,a.onerror=c}),Ua(s,"link",i),n.instance=s}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=lN.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var E5=0;function Oqe(e,t){return e.stylesheets&&e.count===0&&__(e,e.stylesheets),0E5?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(i),clearTimeout(r)}}:null}function lN(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)__(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var cN=null;function __(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,cN=new Map,t.forEach(kqe,e),cN=null,lN.call(e))}function kqe(e,t){if(!(t.state.loading&4)){var n=cN.get(e);if(n)var i=n.get(null);else{n=new Map,cN.set(e,n);for(var r=e.querySelectorAll("link[data-precedence],style[data-precedence]"),s=0;s"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Qke)}catch(e){console.error(e)}}Qke(),Xwe.exports=mI;var Nqe=Xwe.exports;const Rqe=_w(Nqe),F7=p.createContext({});function II(e){const t=p.useRef(null);return t.current===null&&(t.current=e()),t.current}const PI=p.createContext(null),$S=p.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});class Iqe extends p.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const i=this.props.sizeRef.current;i.height=n.offsetHeight||0,i.width=n.offsetWidth||0,i.top=n.offsetTop,i.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function Pqe({children:e,isPresent:t}){const n=p.useId(),i=p.useRef(null),r=p.useRef({width:0,height:0,top:0,left:0}),{nonce:s}=p.useContext($S);return p.useInsertionEffect(()=>{const{width:a,height:l,top:c,left:u}=r.current;if(t||!i.current||!a||!l)return;i.current.dataset.motionPopId=n;const d=document.createElement("style");return s&&(d.nonce=s),document.head.appendChild(d),d.sheet&&d.sheet.insertRule(`
[data-motion-pop-id="${n}"] {
position: absolute !important;
width: ${a}px !important;
@@ -107,27 +107,27 @@ Error generating stack: `+i.message+`
top: ${c}px !important;
left: ${u}px !important;
}
- `),()=>{document.head.removeChild(d)}},[t]),o.jsx(Pqe,{isPresent:t,childRef:i,sizeRef:r,children:p.cloneElement(e,{ref:i})})}const Mqe=({children:e,initial:t,isPresent:n,onExitComplete:i,custom:r,presenceAffectsLayout:s,mode:a})=>{const l=II(Lqe),c=p.useId(),u=p.useCallback(f=>{l.set(f,!0);for(const h of l.values())if(!h)return;i&&i()},[l,i]),d=p.useMemo(()=>({id:c,initial:t,isPresent:n,custom:r,onExitComplete:u,register:f=>(l.set(f,!1),()=>l.delete(f))}),s?[Math.random(),u]:[n,u]);return p.useMemo(()=>{l.forEach((f,h)=>l.set(h,!1))},[n]),p.useEffect(()=>{!n&&!l.size&&i&&i()},[n]),a==="popLayout"&&(e=o.jsx(Dqe,{isPresent:n,children:e})),o.jsx(PI.Provider,{value:d,children:e})};function Lqe(){return new Map}function Vke(e=!0){const t=p.useContext(PI);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:i,register:r}=t,s=p.useId();p.useEffect(()=>{e&&r(s)},[e]);const a=p.useCallback(()=>e&&i&&i(s),[s,i,e]);return!n&&i?[!1,a]:[!0]}const x2=e=>e.key||"";function $G(e){const t=[];return p.Children.forEach(e,n=>{p.isValidElement(n)&&t.push(n)}),t}const U7=typeof window<"u",Hke=U7?p.useLayoutEffect:p.useEffect,Ad=({children:e,custom:t,initial:n=!0,onExitComplete:i,presenceAffectsLayout:r=!0,mode:s="sync",propagate:a=!1})=>{const[l,c]=Vke(a),u=p.useMemo(()=>$G(e),[e]),d=a&&!l?[]:u.map(x2),f=p.useRef(!0),h=p.useRef(u),m=II(()=>new Map),[g,b]=p.useState(u),[v,y]=p.useState(u);Hke(()=>{f.current=!1,h.current=u;for(let O=0;O{const S=x2(O),k=a&&!l?!1:u===v||d.includes(S),C=()=>{if(m.has(S))m.set(S,!0);else return;let E=!0;m.forEach(R=>{R||(E=!1)}),E&&(x==null||x(),y(h.current),a&&(c==null||c()),i&&i())};return o.jsx(Mqe,{isPresent:k,initial:!f.current||n?void 0:!1,custom:k?void 0:t,presenceAffectsLayout:r,mode:s,onExitComplete:k?void 0:C,children:O},S)})})},nu=e=>e;let qke=nu;const $qe={useManualTiming:!1};function Fqe(e){let t=new Set,n=new Set,i=!1,r=!1;const s=new WeakSet;let a={delta:0,timestamp:0,isProcessing:!1};function l(u){s.has(u)&&(c.schedule(u),e()),u(a)}const c={schedule:(u,d=!1,f=!1)=>{const m=f&&i?t:n;return d&&s.add(u),m.has(u)||m.add(u),u},cancel:u=>{n.delete(u),s.delete(u)},process:u=>{if(a=u,i){r=!0;return}i=!0,[t,n]=[n,t],t.forEach(l),t.clear(),i=!1,r&&(r=!1,c.process(u))}};return c}const w2=["read","resolveKeyframes","update","preRender","render","postRender"],Bqe=40;function Wke(e,t){let n=!1,i=!0;const r={delta:0,timestamp:0,isProcessing:!1},s=()=>n=!0,a=w2.reduce((y,w)=>(y[w]=Fqe(s),y),{}),{read:l,resolveKeyframes:c,update:u,preRender:d,render:f,postRender:h}=a,m=()=>{const y=performance.now();n=!1,r.delta=i?1e3/60:Math.max(Math.min(y-r.timestamp,Bqe),1),r.timestamp=y,r.isProcessing=!0,l.process(r),c.process(r),u.process(r),d.process(r),f.process(r),h.process(r),r.isProcessing=!1,n&&t&&(i=!1,e(m))},g=()=>{n=!0,i=!0,r.isProcessing||e(m)};return{schedule:w2.reduce((y,w)=>{const x=a[w];return y[w]=(O,S=!1,k=!1)=>(n||g(),x.schedule(O,S,k)),y},{}),cancel:y=>{for(let w=0;wFG[e].some(n=>!!t[n])};function Uqe(e){for(const t in e)Hx[t]={...Hx[t],...e[t]}}const Qqe=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function fN(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||Qqe.has(e)}let Gke=e=>!fN(e);function Xke(e){e&&(Gke=t=>t.startsWith("on")?!fN(t):e(t))}try{Xke(require("@emotion/is-prop-valid").default)}catch{}function zqe(e,t,n){const i={};for(const r in e)r==="values"&&typeof e.values=="object"||(Gke(r)||n===!0&&fN(r)||!t&&!fN(r)||e.draggable&&r.startsWith("onDrag"))&&(i[r]=e[r]);return i}function Vqe({children:e,isValidProp:t,...n}){t&&Xke(t),n={...p.useContext($S),...n},n.isStatic=II(()=>n.isStatic);const i=p.useMemo(()=>n,[JSON.stringify(n.transition),n.transformPagePoint,n.reducedMotion]);return o.jsx($S.Provider,{value:i,children:e})}function Hqe(e){if(typeof Proxy>"u")return e;const t=new Map,n=(...i)=>e(...i);return new Proxy(n,{get:(i,r)=>r==="create"?e:(t.has(r)||t.set(r,e(r)),t.get(r))})}const DI=p.createContext({});function FS(e){return typeof e=="string"||Array.isArray(e)}function MI(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}const Q7=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],z7=["initial",...Q7];function LI(e){return MI(e.animate)||z7.some(t=>FS(e[t]))}function Yke(e){return!!(LI(e)||e.variants)}function qqe(e,t){if(LI(e)){const{initial:n,animate:i}=e;return{initial:n===!1||FS(n)?n:void 0,animate:FS(i)?i:void 0}}return e.inherit!==!1?t:{}}function Wqe(e){const{initial:t,animate:n}=qqe(e,p.useContext(DI));return p.useMemo(()=>({initial:t,animate:n}),[BG(t),BG(n)])}function BG(e){return Array.isArray(e)?e.join(" "):e}const Kqe=Symbol.for("motionComponentSymbol");function Rv(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function Gqe(e,t,n){return p.useCallback(i=>{i&&e.onMount&&e.onMount(i),t&&(i?t.mount(i):t.unmount()),n&&(typeof n=="function"?n(i):Rv(n)&&(n.current=i))},[t])}const V7=e=>e.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),Xqe="framerAppearId",Zke="data-"+V7(Xqe),{schedule:H7}=Wke(queueMicrotask,!1),Jke=p.createContext({});function Yqe(e,t,n,i,r){var s,a;const{visualElement:l}=p.useContext(DI),c=p.useContext(Kke),u=p.useContext(PI),d=p.useContext($S).reducedMotion,f=p.useRef(null);i=i||c.renderer,!f.current&&i&&(f.current=i(e,{visualState:t,parent:l,props:n,presenceContext:u,blockInitialAnimation:u?u.initial===!1:!1,reducedMotionConfig:d}));const h=f.current,m=p.useContext(Jke);h&&!h.projection&&r&&(h.type==="html"||h.type==="svg")&&Zqe(f.current,n,r,m);const g=p.useRef(!1);p.useInsertionEffect(()=>{h&&g.current&&h.update(n,u)});const b=n[Zke],v=p.useRef(!!b&&!(!((s=window.MotionHandoffIsComplete)===null||s===void 0)&&s.call(window,b))&&((a=window.MotionHasOptimisedAnimation)===null||a===void 0?void 0:a.call(window,b)));return Hke(()=>{h&&(g.current=!0,window.MotionIsMounted=!0,h.updateFeatures(),H7.render(h.render),v.current&&h.animationState&&h.animationState.animateChanges())}),p.useEffect(()=>{h&&(!v.current&&h.animationState&&h.animationState.animateChanges(),v.current&&(queueMicrotask(()=>{var y;(y=window.MotionHandoffMarkAsComplete)===null||y===void 0||y.call(window,b)}),v.current=!1))}),h}function Zqe(e,t,n,i){const{layoutId:r,layout:s,drag:a,dragConstraints:l,layoutScroll:c,layoutRoot:u}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:eSe(e.parent)),e.projection.setOptions({layoutId:r,layout:s,alwaysMeasureLayout:!!a||l&&Rv(l),visualElement:e,animationType:typeof s=="string"?s:"both",initialPromotionConfig:i,layoutScroll:c,layoutRoot:u})}function eSe(e){if(e)return e.options.allowProjection!==!1?e.projection:eSe(e.parent)}function Jqe({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:i,Component:r}){var s,a;e&&Uqe(e);function l(u,d){let f;const h={...p.useContext($S),...u,layoutId:eWe(u)},{isStatic:m}=h,g=Wqe(u),b=i(u,m);if(!m&&U7){tWe();const v=nWe(h);f=v.MeasureLayout,g.visualElement=Yqe(r,b,h,t,v.ProjectionNode)}return o.jsxs(DI.Provider,{value:g,children:[f&&g.visualElement?o.jsx(f,{visualElement:g.visualElement,...h}):null,n(r,u,Gqe(b,g.visualElement,d),b,m,g.visualElement)]})}l.displayName=`motion.${typeof r=="string"?r:`create(${(a=(s=r.displayName)!==null&&s!==void 0?s:r.name)!==null&&a!==void 0?a:""})`}`;const c=p.forwardRef(l);return c[Kqe]=r,c}function eWe({layoutId:e}){const t=p.useContext(B7).id;return t&&e!==void 0?t+"-"+e:e}function tWe(e,t){p.useContext(Kke).strict}function nWe(e){const{drag:t,layout:n}=Hx;if(!t&&!n)return{};const i={...t,...n};return{MeasureLayout:t!=null&&t.isEnabled(e)||n!=null&&n.isEnabled(e)?i.MeasureLayout:void 0,ProjectionNode:i.ProjectionNode}}const iWe=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function q7(e){return typeof e!="string"||e.includes("-")?!1:!!(iWe.indexOf(e)>-1||/[A-Z]/u.test(e))}function UG(e){const t=[{},{}];return e==null||e.values.forEach((n,i)=>{t[0][i]=n.get(),t[1][i]=n.getVelocity()}),t}function W7(e,t,n,i){if(typeof t=="function"){const[r,s]=UG(i);t=t(n!==void 0?n:e.custom,r,s)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[r,s]=UG(i);t=t(n!==void 0?n:e.custom,r,s)}return t}const x$=e=>Array.isArray(e),rWe=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),sWe=e=>x$(e)?e[e.length-1]||0:e,ll=e=>!!(e&&e.getVelocity);function N_(e){const t=ll(e)?e.get():e;return rWe(t)?t.toValue():t}function oWe({scrapeMotionValuesFromProps:e,createRenderState:t,onUpdate:n},i,r,s){const a={latestValues:aWe(i,r,s,e),renderState:t()};return n&&(a.onMount=l=>n({props:i,current:l,...a}),a.onUpdate=l=>n(l)),a}const tSe=e=>(t,n)=>{const i=p.useContext(DI),r=p.useContext(PI),s=()=>oWe(e,t,i,r);return n?s():II(s)};function aWe(e,t,n,i){const r={},s=i(e,{});for(const h in s)r[h]=N_(s[h]);let{initial:a,animate:l}=e;const c=LI(e),u=Yke(e);t&&u&&!c&&e.inherit!==!1&&(a===void 0&&(a=t.initial),l===void 0&&(l=t.animate));let d=n?n.initial===!1:!1;d=d||a===!1;const f=d?l:a;if(f&&typeof f!="boolean"&&!MI(f)){const h=Array.isArray(f)?f:[f];for(let m=0;mt=>typeof t=="string"&&t.startsWith(e),iSe=nSe("--"),lWe=nSe("var(--"),K7=e=>lWe(e)?cWe.test(e.split("/*")[0].trim()):!1,cWe=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,rSe=(e,t)=>t&&typeof e=="number"?t.transform(e):e,ap=(e,t,n)=>n>t?t:ntypeof e=="number",parse:parseFloat,transform:e=>e},BS={...Fw,transform:e=>ap(0,1,e)},O2={...Fw,default:1},vC=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),tm=vC("deg"),Nf=vC("%"),Mn=vC("px"),uWe=vC("vh"),dWe=vC("vw"),QG={...Nf,parse:e=>Nf.parse(e)/100,transform:e=>Nf.transform(e*100)},fWe={borderWidth:Mn,borderTopWidth:Mn,borderRightWidth:Mn,borderBottomWidth:Mn,borderLeftWidth:Mn,borderRadius:Mn,radius:Mn,borderTopLeftRadius:Mn,borderTopRightRadius:Mn,borderBottomRightRadius:Mn,borderBottomLeftRadius:Mn,width:Mn,maxWidth:Mn,height:Mn,maxHeight:Mn,top:Mn,right:Mn,bottom:Mn,left:Mn,padding:Mn,paddingTop:Mn,paddingRight:Mn,paddingBottom:Mn,paddingLeft:Mn,margin:Mn,marginTop:Mn,marginRight:Mn,marginBottom:Mn,marginLeft:Mn,backgroundPositionX:Mn,backgroundPositionY:Mn},hWe={rotate:tm,rotateX:tm,rotateY:tm,rotateZ:tm,scale:O2,scaleX:O2,scaleY:O2,scaleZ:O2,skew:tm,skewX:tm,skewY:tm,distance:Mn,translateX:Mn,translateY:Mn,translateZ:Mn,x:Mn,y:Mn,z:Mn,perspective:Mn,transformPerspective:Mn,opacity:BS,originX:QG,originY:QG,originZ:Mn},zG={...Fw,transform:Math.round},G7={...fWe,...hWe,zIndex:zG,size:Mn,fillOpacity:BS,strokeOpacity:BS,numOctaves:zG},pWe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},mWe=$w.length;function gWe(e,t,n){let i="",r=!0;for(let s=0;s({style:{},transform:{},transformOrigin:{},vars:{}}),sSe=()=>({...Z7(),attrs:{}}),J7=e=>typeof e=="string"&&e.toLowerCase()==="svg";function oSe(e,{style:t,vars:n},i,r){Object.assign(e.style,t,r&&r.getProjectionStyles(i));for(const s in n)e.style.setProperty(s,n[s])}const aSe=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function lSe(e,t,n,i){oSe(e,t,void 0,i);for(const r in t.attrs)e.setAttribute(aSe.has(r)?r:V7(r),t.attrs[r])}const hN={};function wWe(e){Object.assign(hN,e)}function cSe(e,{layout:t,layoutId:n}){return Hy.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!hN[e]||e==="opacity")}function eU(e,t,n){var i;const{style:r}=e,s={};for(const a in r)(ll(r[a])||t.style&&ll(t.style[a])||cSe(a,e)||((i=n==null?void 0:n.getValue(a))===null||i===void 0?void 0:i.liveStyle)!==void 0)&&(s[a]=r[a]);return s}function uSe(e,t,n){const i=eU(e,t,n);for(const r in e)if(ll(e[r])||ll(t[r])){const s=$w.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;i[s]=e[r]}return i}function OWe(e,t){try{t.dimensions=typeof e.getBBox=="function"?e.getBBox():e.getBoundingClientRect()}catch{t.dimensions={x:0,y:0,width:0,height:0}}}const HG=["x","y","width","height","cx","cy","r"],kWe={useVisualState:tSe({scrapeMotionValuesFromProps:uSe,createRenderState:sSe,onUpdate:({props:e,prevProps:t,current:n,renderState:i,latestValues:r})=>{if(!n)return;let s=!!e.drag;if(!s){for(const l in r)if(Hy.has(l)){s=!0;break}}if(!s)return;let a=!t;if(t)for(let l=0;l{OWe(n,i),gs.render(()=>{Y7(i,r,J7(n.tagName),e.transformTemplate),lSe(n,i)})})}})},SWe={useVisualState:tSe({scrapeMotionValuesFromProps:eU,createRenderState:Z7})};function dSe(e,t,n){for(const i in t)!ll(t[i])&&!cSe(i,n)&&(e[i]=t[i])}function EWe({transformTemplate:e},t){return p.useMemo(()=>{const n=Z7();return X7(n,t,e),Object.assign({},n.vars,n.style)},[t])}function CWe(e,t){const n=e.style||{},i={};return dSe(i,n,e),Object.assign(i,EWe(e,t)),i}function TWe(e,t){const n={},i=CWe(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=i,n}function AWe(e,t,n,i){const r=p.useMemo(()=>{const s=sSe();return Y7(s,t,J7(i),e.transformTemplate),{...s.attrs,style:{...s.style}}},[t]);if(e.style){const s={};dSe(s,e.style,e),r.style={...s,...r.style}}return r}function _We(e=!1){return(n,i,r,{latestValues:s},a)=>{const c=(q7(n)?AWe:TWe)(i,s,a,n),u=zqe(i,typeof n=="string",e),d=n!==p.Fragment?{...u,...c,ref:r}:{},{children:f}=i,h=p.useMemo(()=>ll(f)?f.get():f,[f]);return p.createElement(n,{...d,children:h})}}function jWe(e,t){return function(i,{forwardMotionProps:r}={forwardMotionProps:!1}){const a={...q7(i)?kWe:SWe,preloadedFeatures:e,useRender:_We(r),createVisualElement:t,Component:i};return Jqe(a)}}function fSe(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let i=0;i(R_===void 0&&Rf.set(Ra.isProcessing||$qe.useManualTiming?Ra.timestamp:performance.now()),R_),set:e=>{R_=e,queueMicrotask(NWe)}};function nU(e,t){e.indexOf(t)===-1&&e.push(t)}function iU(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class rU{constructor(){this.subscriptions=[]}add(t){return nU(this.subscriptions,t),()=>iU(this.subscriptions,t)}notify(t,n,i){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](t,n,i);else for(let s=0;s!isNaN(parseFloat(e));class IWe{constructor(t,n={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(i,r=!0)=>{const s=Rf.now();this.updatedAt!==s&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(i),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),r&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=Rf.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=RWe(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new rU);const i=this.events[t].add(n);return t==="change"?()=>{i(),gs.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}setWithVelocity(t,n,i){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-i}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const t=Rf.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>qG)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,qG);return pSe(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function US(e,t){return new IWe(e,t)}function PWe(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,US(n))}function DWe(e,t){const n=$I(e,t);let{transitionEnd:i={},transition:r={},...s}=n||{};s={...s,...i};for(const a in s){const l=sWe(s[a]);PWe(e,a,l)}}function MWe(e){return!!(ll(e)&&e.add)}function w$(e,t){const n=e.getValue("willChange");if(MWe(n))return n.add(t)}function mSe(e){return e.props[Zke]}function sU(e){let t;return()=>(t===void 0&&(t=e()),t)}const LWe=sU(()=>window.ScrollTimeline!==void 0);class $We{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>"finished"in t?t.finished:t))}getAll(t){return this.animations[0][t]}setAll(t,n){for(let i=0;i{if(LWe()&&r.attachTimeline)return r.attachTimeline(t);if(typeof n=="function")return n(r)});return()=>{i.forEach((r,s)=>{r&&r(),this.animations[s].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get startTime(){return this.getAll("startTime")}get duration(){let t=0;for(let n=0;nn[t]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class FWe extends $We{then(t,n){return Promise.all(this.animations).then(t).catch(n)}}const Vh=e=>e*1e3,Hh=e=>e/1e3;function oU(e){return typeof e=="function"}function WG(e,t){e.timeline=t,e.onfinish=null}const aU=e=>Array.isArray(e)&&typeof e[0]=="number",BWe={linearEasing:void 0};function UWe(e,t){const n=sU(e);return()=>{var i;return(i=BWe[t])!==null&&i!==void 0?i:n()}}const pN=UWe(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),qx=(e,t,n)=>{const i=t-e;return i===0?1:(n-e)/i},gSe=(e,t,n=10)=>{let i="";const r=Math.max(Math.round(t/n),2);for(let s=0;s`cubic-bezier(${e}, ${t}, ${n}, ${i})`,O$={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:XO([0,.65,.55,1]),circOut:XO([.55,0,1,.45]),backIn:XO([.31,.01,.66,-.59]),backOut:XO([.33,1.53,.69,.99])};function ySe(e,t){if(e)return typeof e=="function"&&pN()?gSe(e,t):aU(e)?XO(e):Array.isArray(e)?e.map(n=>ySe(n,t)||O$.easeOut):O$[e]}const vSe=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,QWe=1e-7,zWe=12;function VWe(e,t,n,i,r){let s,a,l=0;do a=t+(n-t)/2,s=vSe(a,i,r)-e,s>0?n=a:t=a;while(Math.abs(s)>QWe&&++lVWe(s,0,1,e,n);return s=>s===0||s===1?s:vSe(r(s),t,i)}const xSe=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,wSe=e=>t=>1-e(1-t),OSe=xC(.33,1.53,.69,.99),lU=wSe(OSe),kSe=xSe(lU),SSe=e=>(e*=2)<1?.5*lU(e):.5*(2-Math.pow(2,-10*(e-1))),cU=e=>1-Math.sin(Math.acos(e)),ESe=wSe(cU),CSe=xSe(cU),TSe=e=>/^0[^.\s]+$/u.test(e);function HWe(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||TSe(e):!0}const Lk=e=>Math.round(e*1e5)/1e5,uU=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function qWe(e){return e==null}const WWe=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,dU=(e,t)=>n=>!!(typeof n=="string"&&WWe.test(n)&&n.startsWith(e)||t&&!qWe(n)&&Object.prototype.hasOwnProperty.call(n,t)),ASe=(e,t,n)=>i=>{if(typeof i!="string")return i;const[r,s,a,l]=i.match(uU);return{[e]:parseFloat(r),[t]:parseFloat(s),[n]:parseFloat(a),alpha:l!==void 0?parseFloat(l):1}},KWe=e=>ap(0,255,e),T5={...Fw,transform:e=>Math.round(KWe(e))},Pb={test:dU("rgb","red"),parse:ASe("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:i=1})=>"rgba("+T5.transform(e)+", "+T5.transform(t)+", "+T5.transform(n)+", "+Lk(BS.transform(i))+")"};function GWe(e){let t="",n="",i="",r="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),i=e.substring(5,7),r=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),i=e.substring(3,4),r=e.substring(4,5),t+=t,n+=n,i+=i,r+=r),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(i,16),alpha:r?parseInt(r,16)/255:1}}const k$={test:dU("#"),parse:GWe,transform:Pb.transform},Iv={test:dU("hsl","hue"),parse:ASe("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:i=1})=>"hsla("+Math.round(e)+", "+Nf.transform(Lk(t))+", "+Nf.transform(Lk(n))+", "+Lk(BS.transform(i))+")"},sl={test:e=>Pb.test(e)||k$.test(e)||Iv.test(e),parse:e=>Pb.test(e)?Pb.parse(e):Iv.test(e)?Iv.parse(e):k$.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Pb.transform(e):Iv.transform(e)},XWe=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function YWe(e){var t,n;return isNaN(e)&&typeof e=="string"&&(((t=e.match(uU))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(XWe))===null||n===void 0?void 0:n.length)||0)>0}const _Se="number",jSe="color",ZWe="var",JWe="var(",KG="${}",eKe=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function QS(e){const t=e.toString(),n=[],i={color:[],number:[],var:[]},r=[];let s=0;const l=t.replace(eKe,c=>(sl.test(c)?(i.color.push(s),r.push(jSe),n.push(sl.parse(c))):c.startsWith(JWe)?(i.var.push(s),r.push(ZWe),n.push(c)):(i.number.push(s),r.push(_Se),n.push(parseFloat(c))),++s,KG)).split(KG);return{values:n,split:l,indexes:i,types:r}}function NSe(e){return QS(e).values}function RSe(e){const{split:t,types:n}=QS(e),i=t.length;return r=>{let s="";for(let a=0;atypeof e=="number"?0:e;function nKe(e){const t=NSe(e);return RSe(e)(t.map(tKe))}const ig={test:YWe,parse:NSe,createTransformer:RSe,getAnimatableNone:nKe},iKe=new Set(["brightness","contrast","saturate","opacity"]);function rKe(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[i]=n.match(uU)||[];if(!i)return e;const r=n.replace(i,"");let s=iKe.has(t)?1:0;return i!==n&&(s*=100),t+"("+s+r+")"}const sKe=/\b([a-z-]*)\(.*?\)/gu,S$={...ig,getAnimatableNone:e=>{const t=e.match(sKe);return t?t.map(rKe).join(" "):e}},oKe={...G7,color:sl,backgroundColor:sl,outlineColor:sl,fill:sl,stroke:sl,borderColor:sl,borderTopColor:sl,borderRightColor:sl,borderBottomColor:sl,borderLeftColor:sl,filter:S$,WebkitFilter:S$},fU=e=>oKe[e];function ISe(e,t){let n=fU(e);return n!==S$&&(n=ig),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const aKe=new Set(["auto","none","0"]);function lKe(e,t,n){let i=0,r;for(;ie===Fw||e===Mn,XG=(e,t)=>parseFloat(e.split(", ")[t]),YG=(e,t)=>(n,{transform:i})=>{if(i==="none"||!i)return 0;const r=i.match(/^matrix3d\((.+)\)$/u);if(r)return XG(r[1],t);{const s=i.match(/^matrix\((.+)\)$/u);return s?XG(s[1],e):0}},cKe=new Set(["x","y","z"]),uKe=$w.filter(e=>!cKe.has(e));function dKe(e){const t=[];return uKe.forEach(n=>{const i=e.getValue(n);i!==void 0&&(t.push([n,i.get()]),i.set(n.startsWith("scale")?1:0))}),t}const Wx={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:YG(4,13),y:YG(5,14)};Wx.translateX=Wx.x;Wx.translateY=Wx.y;const ey=new Set;let E$=!1,C$=!1;function PSe(){if(C$){const e=Array.from(ey).filter(i=>i.needsMeasurement),t=new Set(e.map(i=>i.element)),n=new Map;t.forEach(i=>{const r=dKe(i);r.length&&(n.set(i,r),i.render())}),e.forEach(i=>i.measureInitialState()),t.forEach(i=>{i.render();const r=n.get(i);r&&r.forEach(([s,a])=>{var l;(l=i.getValue(s))===null||l===void 0||l.set(a)})}),e.forEach(i=>i.measureEndState()),e.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}C$=!1,E$=!1,ey.forEach(e=>e.complete()),ey.clear()}function DSe(){ey.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(C$=!0)})}function fKe(){DSe(),PSe()}class hU{constructor(t,n,i,r,s,a=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=i,this.motionValue=r,this.element=s,this.isAsync=a}scheduleResolve(){this.isScheduled=!0,this.isAsync?(ey.add(this),E$||(E$=!0,gs.read(DSe),gs.resolveKeyframes(PSe))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:i,motionValue:r}=this;for(let s=0;s/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e),hKe=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function pKe(e){const t=hKe.exec(e);if(!t)return[,];const[,n,i,r]=t;return[`--${n??i}`,r]}function LSe(e,t,n=1){const[i,r]=pKe(e);if(!i)return;const s=window.getComputedStyle(t).getPropertyValue(i);if(s){const a=s.trim();return MSe(a)?parseFloat(a):a}return K7(r)?LSe(r,t,n+1):r}const $Se=e=>t=>t.test(e),mKe={test:e=>e==="auto",parse:e=>e},FSe=[Fw,Mn,Nf,tm,dWe,uWe,mKe],ZG=e=>FSe.find($Se(e));class BSe extends hU{constructor(t,n,i,r,s){super(t,n,i,r,s,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:n,name:i}=this;if(!n||!n.current)return;super.readKeyframes();for(let c=0;c{n.getValue(c).set(u)}),this.resolveNoneKeyframes()}}const JG=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(ig.test(e)||e==="0")&&!e.startsWith("url("));function gKe(e){const t=e[0];if(e.length===1)return!0;for(let n=0;ne!==null;function FI(e,{repeat:t,repeatType:n="loop"},i){const r=e.filter(yKe),s=t&&n!=="loop"&&t%2===1?0:r.length-1;return!s||i===void 0?r[s]:i}const vKe=40;class USe{constructor({autoplay:t=!0,delay:n=0,type:i="keyframes",repeat:r=0,repeatDelay:s=0,repeatType:a="loop",...l}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=Rf.now(),this.options={autoplay:t,delay:n,type:i,repeat:r,repeatDelay:s,repeatType:a,...l},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>vKe?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&fKe(),this._resolved}onKeyframesResolved(t,n){this.resolvedAt=Rf.now(),this.hasAttemptedResolve=!0;const{name:i,type:r,velocity:s,delay:a,onComplete:l,onUpdate:c,isGenerator:u}=this.options;if(!u&&!bKe(t,i,r,s))if(a)this.options.duration=0;else{c&&c(FI(t,this.options,n)),l&&l(),this.resolveFinishedPromise();return}const d=this.initPlayback(t,n);d!==!1&&(this._resolved={keyframes:t,finalKeyframe:n,...d},this.onPostResolved())}onPostResolved(){}then(t,n){return this.currentFinishedPromise.then(t,n)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(t=>{this.resolveFinishedPromise=t})}}const T$=2e4;function QSe(e){let t=0;const n=50;let i=e.next(t);for(;!i.done&&t=T$?1/0:t}const Qs=(e,t,n)=>e+(t-e)*n;function A5(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function xKe({hue:e,saturation:t,lightness:n,alpha:i}){e/=360,t/=100,n/=100;let r=0,s=0,a=0;if(!t)r=s=a=n;else{const l=n<.5?n*(1+t):n+t-n*t,c=2*n-l;r=A5(c,l,e+1/3),s=A5(c,l,e),a=A5(c,l,e-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(a*255),alpha:i}}function mN(e,t){return n=>n>0?t:e}const _5=(e,t,n)=>{const i=e*e,r=n*(t*t-i)+i;return r<0?0:Math.sqrt(r)},wKe=[k$,Pb,Iv],OKe=e=>wKe.find(t=>t.test(e));function eX(e){const t=OKe(e);if(!t)return!1;let n=t.parse(e);return t===Iv&&(n=xKe(n)),n}const tX=(e,t)=>{const n=eX(e),i=eX(t);if(!n||!i)return mN(e,t);const r={...n};return s=>(r.red=_5(n.red,i.red,s),r.green=_5(n.green,i.green,s),r.blue=_5(n.blue,i.blue,s),r.alpha=Qs(n.alpha,i.alpha,s),Pb.transform(r))},kKe=(e,t)=>n=>t(e(n)),wC=(...e)=>e.reduce(kKe),A$=new Set(["none","hidden"]);function SKe(e,t){return A$.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function EKe(e,t){return n=>Qs(e,t,n)}function pU(e){return typeof e=="number"?EKe:typeof e=="string"?K7(e)?mN:sl.test(e)?tX:AKe:Array.isArray(e)?zSe:typeof e=="object"?sl.test(e)?tX:CKe:mN}function zSe(e,t){const n=[...e],i=n.length,r=e.map((s,a)=>pU(s)(s,t[a]));return s=>{for(let a=0;a{for(const s in i)n[s]=i[s](r);return n}}function TKe(e,t){var n;const i=[],r={color:0,var:0,number:0};for(let s=0;s{const n=ig.createTransformer(t),i=QS(e),r=QS(t);return i.indexes.var.length===r.indexes.var.length&&i.indexes.color.length===r.indexes.color.length&&i.indexes.number.length>=r.indexes.number.length?A$.has(e)&&!r.values.length||A$.has(t)&&!i.values.length?SKe(e,t):wC(zSe(TKe(i,r),r.values),n):mN(e,t)};function VSe(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?Qs(e,t,n):pU(e)(e,t)}const _Ke=5;function HSe(e,t,n){const i=Math.max(t-_Ke,0);return pSe(n-e(i),t-i)}const Ks={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},j5=.001;function jKe({duration:e=Ks.duration,bounce:t=Ks.bounce,velocity:n=Ks.velocity,mass:i=Ks.mass}){let r,s,a=1-t;a=ap(Ks.minDamping,Ks.maxDamping,a),e=ap(Ks.minDuration,Ks.maxDuration,Hh(e)),a<1?(r=u=>{const d=u*a,f=d*e,h=d-n,m=_$(u,a),g=Math.exp(-f);return j5-h/m*g},s=u=>{const f=u*a*e,h=f*n+n,m=Math.pow(a,2)*Math.pow(u,2)*e,g=Math.exp(-f),b=_$(Math.pow(u,2),a);return(-r(u)+j5>0?-1:1)*((h-m)*g)/b}):(r=u=>{const d=Math.exp(-u*e),f=(u-n)*e+1;return-j5+d*f},s=u=>{const d=Math.exp(-u*e),f=(n-u)*(e*e);return d*f});const l=5/e,c=RKe(r,s,l);if(e=Vh(e),isNaN(c))return{stiffness:Ks.stiffness,damping:Ks.damping,duration:e};{const u=Math.pow(c,2)*i;return{stiffness:u,damping:a*2*Math.sqrt(i*u),duration:e}}}const NKe=12;function RKe(e,t,n){let i=n;for(let r=1;re[n]!==void 0)}function DKe(e){let t={velocity:Ks.velocity,stiffness:Ks.stiffness,damping:Ks.damping,mass:Ks.mass,isResolvedFromDuration:!1,...e};if(!nX(e,PKe)&&nX(e,IKe))if(e.visualDuration){const n=e.visualDuration,i=2*Math.PI/(n*1.2),r=i*i,s=2*ap(.05,1,1-(e.bounce||0))*Math.sqrt(r);t={...t,mass:Ks.mass,stiffness:r,damping:s}}else{const n=jKe(e);t={...t,...n,mass:Ks.mass},t.isResolvedFromDuration=!0}return t}function qSe(e=Ks.visualDuration,t=Ks.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:i,restDelta:r}=n;const s=n.keyframes[0],a=n.keyframes[n.keyframes.length-1],l={done:!1,value:s},{stiffness:c,damping:u,mass:d,duration:f,velocity:h,isResolvedFromDuration:m}=DKe({...n,velocity:-Hh(n.velocity||0)}),g=h||0,b=u/(2*Math.sqrt(c*d)),v=a-s,y=Hh(Math.sqrt(c/d)),w=Math.abs(v)<5;i||(i=w?Ks.restSpeed.granular:Ks.restSpeed.default),r||(r=w?Ks.restDelta.granular:Ks.restDelta.default);let x;if(b<1){const S=_$(y,b);x=k=>{const C=Math.exp(-b*y*k);return a-C*((g+b*y*v)/S*Math.sin(S*k)+v*Math.cos(S*k))}}else if(b===1)x=S=>a-Math.exp(-y*S)*(v+(g+y*v)*S);else{const S=y*Math.sqrt(b*b-1);x=k=>{const C=Math.exp(-b*y*k),E=Math.min(S*k,300);return a-C*((g+b*y*v)*Math.sinh(E)+S*v*Math.cosh(E))/S}}const O={calculatedDuration:m&&f||null,next:S=>{const k=x(S);if(m)l.done=S>=f;else{let C=0;b<1&&(C=S===0?Vh(g):HSe(x,S,k));const E=Math.abs(C)<=i,R=Math.abs(a-k)<=r;l.done=E&&R}return l.value=l.done?a:k,l},toString:()=>{const S=Math.min(QSe(O),T$),k=gSe(C=>O.next(S*C).value,S,30);return S+"ms "+k}};return O}function iX({keyframes:e,velocity:t=0,power:n=.8,timeConstant:i=325,bounceDamping:r=10,bounceStiffness:s=500,modifyTarget:a,min:l,max:c,restDelta:u=.5,restSpeed:d}){const f=e[0],h={done:!1,value:f},m=E=>l!==void 0&&Ec,g=E=>l===void 0?c:c===void 0||Math.abs(l-E)-b*Math.exp(-E/i),x=E=>y+w(E),O=E=>{const R=w(E),A=x(E);h.done=Math.abs(R)<=u,h.value=h.done?y:A};let S,k;const C=E=>{m(h.value)&&(S=E,k=qSe({keyframes:[h.value,g(h.value)],velocity:HSe(x,E,h.value),damping:r,stiffness:s,restDelta:u,restSpeed:d}))};return C(0),{calculatedDuration:null,next:E=>{let R=!1;return!k&&S===void 0&&(R=!0,O(E),C(E)),S!==void 0&&E>=S?k.next(E-S):(!R&&O(E),h)}}}const MKe=xC(.42,0,1,1),LKe=xC(0,0,.58,1),WSe=xC(.42,0,.58,1),$Ke=e=>Array.isArray(e)&&typeof e[0]!="number",FKe={linear:nu,easeIn:MKe,easeInOut:WSe,easeOut:LKe,circIn:cU,circInOut:CSe,circOut:ESe,backIn:lU,backInOut:kSe,backOut:OSe,anticipate:SSe},rX=e=>{if(aU(e)){qke(e.length===4);const[t,n,i,r]=e;return xC(t,n,i,r)}else if(typeof e=="string")return FKe[e];return e};function BKe(e,t,n){const i=[],r=n||VSe,s=e.length-1;for(let a=0;at[0];if(s===2&&t[0]===t[1])return()=>t[1];const a=e[0]===e[1];e[0]>e[s-1]&&(e=[...e].reverse(),t=[...t].reverse());const l=BKe(t,i,r),c=l.length,u=d=>{if(a&&d1)for(;fu(ap(e[0],e[s-1],d)):u}function QKe(e,t){const n=e[e.length-1];for(let i=1;i<=t;i++){const r=qx(0,t,i);e.push(Qs(n,1,r))}}function zKe(e){const t=[0];return QKe(t,e.length-1),t}function VKe(e,t){return e.map(n=>n*t)}function HKe(e,t){return e.map(()=>t||WSe).splice(0,e.length-1)}function gN({duration:e=300,keyframes:t,times:n,ease:i="easeInOut"}){const r=$Ke(i)?i.map(rX):rX(i),s={done:!1,value:t[0]},a=VKe(n&&n.length===t.length?n:zKe(t),e),l=UKe(a,t,{ease:Array.isArray(r)?r:HKe(t,r)});return{calculatedDuration:e,next:c=>(s.value=l(c),s.done=c>=e,s)}}const qKe=e=>{const t=({timestamp:n})=>e(n);return{start:()=>gs.update(t,!0),stop:()=>ng(t),now:()=>Ra.isProcessing?Ra.timestamp:Rf.now()}},WKe={decay:iX,inertia:iX,tween:gN,keyframes:gN,spring:qSe},KKe=e=>e/100;class mU extends USe{constructor(t){super(t),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:c}=this.options;c&&c()};const{name:n,motionValue:i,element:r,keyframes:s}=this.options,a=(r==null?void 0:r.KeyframeResolver)||hU,l=(c,u)=>this.onKeyframesResolved(c,u);this.resolver=new a(s,l,n,i,r),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(t){const{type:n="keyframes",repeat:i=0,repeatDelay:r=0,repeatType:s,velocity:a=0}=this.options,l=oU(n)?n:WKe[n]||gN;let c,u;l!==gN&&typeof t[0]!="number"&&(c=wC(KKe,VSe(t[0],t[1])),t=[0,100]);const d=l({...this.options,keyframes:t});s==="mirror"&&(u=l({...this.options,keyframes:[...t].reverse(),velocity:-a})),d.calculatedDuration===null&&(d.calculatedDuration=QSe(d));const{calculatedDuration:f}=d,h=f+r,m=h*(i+1)-r;return{generator:d,mirroredGenerator:u,mapPercentToKeyframes:c,calculatedDuration:f,resolvedDuration:h,totalDuration:m}}onPostResolved(){const{autoplay:t=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!t?this.pause():this.state=this.pendingPlayState}tick(t,n=!1){const{resolved:i}=this;if(!i){const{keyframes:E}=this.options;return{done:!0,value:E[E.length-1]}}const{finalKeyframe:r,generator:s,mirroredGenerator:a,mapPercentToKeyframes:l,keyframes:c,calculatedDuration:u,totalDuration:d,resolvedDuration:f}=i;if(this.startTime===null)return s.next(0);const{delay:h,repeat:m,repeatType:g,repeatDelay:b,onUpdate:v}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-d/this.speed,this.startTime)),n?this.currentTime=t:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(t-this.startTime)*this.speed;const y=this.currentTime-h*(this.speed>=0?1:-1),w=this.speed>=0?y<0:y>d;this.currentTime=Math.max(y,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=d);let x=this.currentTime,O=s;if(m){const E=Math.min(this.currentTime,d)/f;let R=Math.floor(E),A=E%1;!A&&E>=1&&(A=1),A===1&&R--,R=Math.min(R,m+1),!!(R%2)&&(g==="reverse"?(A=1-A,b&&(A-=b/f)):g==="mirror"&&(O=a)),x=ap(0,1,A)*f}const S=w?{done:!1,value:c[0]}:O.next(x);l&&(S.value=l(S.value));let{done:k}=S;!w&&u!==null&&(k=this.speed>=0?this.currentTime>=d:this.currentTime<=0);const C=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&k);return C&&r!==void 0&&(S.value=FI(c,this.options,r)),v&&v(S.value),C&&this.finish(),S}get duration(){const{resolved:t}=this;return t?Hh(t.calculatedDuration):0}get time(){return Hh(this.currentTime)}set time(t){t=Vh(t),this.currentTime=t,this.holdTime!==null||this.speed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.speed)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;this.playbackSpeed=t,n&&(this.time=Hh(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:t=qKe,onPlay:n,startTime:i}=this.options;this.driver||(this.driver=t(s=>this.tick(s))),n&&n();const r=this.driver.now();this.holdTime!==null?this.startTime=r-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=r):this.startTime=i??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var t;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(t=this.currentTime)!==null&&t!==void 0?t:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:t}=this.options;t&&t()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}}const GKe=new Set(["opacity","clipPath","filter","transform"]);function XKe(e,t,n,{delay:i=0,duration:r=300,repeat:s=0,repeatType:a="loop",ease:l="easeInOut",times:c}={}){const u={[t]:n};c&&(u.offset=c);const d=ySe(l,r);return Array.isArray(d)&&(u.easing=d),e.animate(u,{delay:i,duration:r,easing:Array.isArray(d)?"linear":d,fill:"both",iterations:s+1,direction:a==="reverse"?"alternate":"normal"})}const YKe=sU(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),bN=10,ZKe=2e4;function JKe(e){return oU(e.type)||e.type==="spring"||!bSe(e.ease)}function eGe(e,t){const n=new mU({...t,keyframes:e,repeat:0,delay:0,isGenerator:!0});let i={done:!1,value:e[0]};const r=[];let s=0;for(;!i.done&&sthis.onKeyframesResolved(a,l),n,i,r),this.resolver.scheduleResolve()}initPlayback(t,n){let{duration:i=300,times:r,ease:s,type:a,motionValue:l,name:c,startTime:u}=this.options;if(!l.owner||!l.owner.current)return!1;if(typeof s=="string"&&pN()&&tGe(s)&&(s=KSe[s]),JKe(this.options)){const{onComplete:f,onUpdate:h,motionValue:m,element:g,...b}=this.options,v=eGe(t,b);t=v.keyframes,t.length===1&&(t[1]=t[0]),i=v.duration,r=v.times,s=v.ease,a="keyframes"}const d=XKe(l.owner.current,c,t,{...this.options,duration:i,times:r,ease:s});return d.startTime=u??this.calcStartTime(),this.pendingTimeline?(WG(d,this.pendingTimeline),this.pendingTimeline=void 0):d.onfinish=()=>{const{onComplete:f}=this.options;l.set(FI(t,this.options,n)),f&&f(),this.cancel(),this.resolveFinishedPromise()},{animation:d,duration:i,times:r,type:a,ease:s,keyframes:t}}get duration(){const{resolved:t}=this;if(!t)return 0;const{duration:n}=t;return Hh(n)}get time(){const{resolved:t}=this;if(!t)return 0;const{animation:n}=t;return Hh(n.currentTime||0)}set time(t){const{resolved:n}=this;if(!n)return;const{animation:i}=n;i.currentTime=Vh(t)}get speed(){const{resolved:t}=this;if(!t)return 1;const{animation:n}=t;return n.playbackRate}set speed(t){const{resolved:n}=this;if(!n)return;const{animation:i}=n;i.playbackRate=t}get state(){const{resolved:t}=this;if(!t)return"idle";const{animation:n}=t;return n.playState}get startTime(){const{resolved:t}=this;if(!t)return null;const{animation:n}=t;return n.startTime}attachTimeline(t){if(!this._resolved)this.pendingTimeline=t;else{const{resolved:n}=this;if(!n)return nu;const{animation:i}=n;WG(i,t)}return nu}play(){if(this.isStopped)return;const{resolved:t}=this;if(!t)return;const{animation:n}=t;n.playState==="finished"&&this.updateFinishedPromise(),n.play()}pause(){const{resolved:t}=this;if(!t)return;const{animation:n}=t;n.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:t}=this;if(!t)return;const{animation:n,keyframes:i,duration:r,type:s,ease:a,times:l}=t;if(n.playState==="idle"||n.playState==="finished")return;if(this.time){const{motionValue:u,onUpdate:d,onComplete:f,element:h,...m}=this.options,g=new mU({...m,keyframes:i,duration:r,type:s,ease:a,times:l,isGenerator:!0}),b=Vh(this.time);u.setWithVelocity(g.sample(b-bN).value,g.sample(b).value,bN)}const{onStop:c}=this.options;c&&c(),this.cancel()}complete(){const{resolved:t}=this;t&&t.animation.finish()}cancel(){const{resolved:t}=this;t&&t.animation.cancel()}static supports(t){const{motionValue:n,name:i,repeatDelay:r,repeatType:s,damping:a,type:l}=t;if(!n||!n.owner||!(n.owner.current instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:u}=n.owner.getProps();return YKe()&&i&&GKe.has(i)&&!c&&!u&&!r&&s!=="mirror"&&a!==0&&l!=="inertia"}}const nGe={type:"spring",stiffness:500,damping:25,restSpeed:10},iGe=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),rGe={type:"keyframes",duration:.8},sGe={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},oGe=(e,{keyframes:t})=>t.length>2?rGe:Hy.has(e)?e.startsWith("scale")?iGe(t[1]):nGe:sGe;function aGe({when:e,delay:t,delayChildren:n,staggerChildren:i,staggerDirection:r,repeat:s,repeatType:a,repeatDelay:l,from:c,elapsed:u,...d}){return!!Object.keys(d).length}const gU=(e,t,n,i={},r,s)=>a=>{const l=tU(i,e)||{},c=l.delay||i.delay||0;let{elapsed:u=0}=i;u=u-Vh(c);let d={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...l,delay:-u,onUpdate:h=>{t.set(h),l.onUpdate&&l.onUpdate(h)},onComplete:()=>{a(),l.onComplete&&l.onComplete()},name:e,motionValue:t,element:s?void 0:r};aGe(l)||(d={...d,...oGe(e,d)}),d.duration&&(d.duration=Vh(d.duration)),d.repeatDelay&&(d.repeatDelay=Vh(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let f=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(d.duration=0,d.delay===0&&(f=!0)),f&&!s&&t.get()!==void 0){const h=FI(d.keyframes,l);if(h!==void 0)return gs.update(()=>{d.onUpdate(h),d.onComplete()}),new FWe([])}return!s&&sX.supports(d)?new sX(d):new mU(d)};function lGe({protectedKeys:e,needsAnimating:t},n){const i=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,i}function GSe(e,t,{delay:n=0,transitionOverride:i,type:r}={}){var s;let{transition:a=e.getDefaultTransition(),transitionEnd:l,...c}=t;i&&(a=i);const u=[],d=r&&e.animationState&&e.animationState.getState()[r];for(const f in c){const h=e.getValue(f,(s=e.latestValues[f])!==null&&s!==void 0?s:null),m=c[f];if(m===void 0||d&&lGe(d,f))continue;const g={delay:n,...tU(a||{},f)};let b=!1;if(window.MotionHandoffAnimation){const y=mSe(e);if(y){const w=window.MotionHandoffAnimation(y,f,gs);w!==null&&(g.startTime=w,b=!0)}}w$(e,f),h.start(gU(f,h,m,e.shouldReduceMotion&&hSe.has(f)?{type:!1}:g,e,b));const v=h.animation;v&&u.push(v)}return l&&Promise.all(u).then(()=>{gs.update(()=>{l&&DWe(e,l)})}),u}function j$(e,t,n={}){var i;const r=$I(e,t,n.type==="exit"?(i=e.presenceContext)===null||i===void 0?void 0:i.custom:void 0);let{transition:s=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(s=n.transitionOverride);const a=r?()=>Promise.all(GSe(e,r,n)):()=>Promise.resolve(),l=e.variantChildren&&e.variantChildren.size?(u=0)=>{const{delayChildren:d=0,staggerChildren:f,staggerDirection:h}=s;return cGe(e,t,d+u,f,h,n)}:()=>Promise.resolve(),{when:c}=s;if(c){const[u,d]=c==="beforeChildren"?[a,l]:[l,a];return u().then(()=>d())}else return Promise.all([a(),l(n.delay)])}function cGe(e,t,n=0,i=0,r=1,s){const a=[],l=(e.variantChildren.size-1)*i,c=r===1?(u=0)=>u*i:(u=0)=>l-u*i;return Array.from(e.variantChildren).sort(uGe).forEach((u,d)=>{u.notify("AnimationStart",t),a.push(j$(u,t,{...s,delay:n+c(d)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(a)}function uGe(e,t){return e.sortNodePosition(t)}function dGe(e,t,n={}){e.notify("AnimationStart",t);let i;if(Array.isArray(t)){const r=t.map(s=>j$(e,s,n));i=Promise.all(r)}else if(typeof t=="string")i=j$(e,t,n);else{const r=typeof t=="function"?$I(e,t,n.custom):t;i=Promise.all(GSe(e,r,n))}return i.then(()=>{e.notify("AnimationComplete",t)})}const fGe=z7.length;function XSe(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?XSe(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;nPromise.all(t.map(({animation:n,options:i})=>dGe(e,n,i)))}function gGe(e){let t=mGe(e),n=oX(),i=!0;const r=c=>(u,d)=>{var f;const h=$I(e,d,c==="exit"?(f=e.presenceContext)===null||f===void 0?void 0:f.custom:void 0);if(h){const{transition:m,transitionEnd:g,...b}=h;u={...u,...b,...g}}return u};function s(c){t=c(e)}function a(c){const{props:u}=e,d=XSe(e.parent)||{},f=[],h=new Set;let m={},g=1/0;for(let v=0;vg&&O,R=!1;const A=Array.isArray(x)?x:[x];let j=A.reduce(r(y),{});S===!1&&(j={});const{prevResolvedValues:T={}}=w,N={...T,...j},_=P=>{E=!0,h.has(P)&&(R=!0,h.delete(P)),w.needsAnimating[P]=!0;const L=e.getValue(P);L&&(L.liveStyle=!1)};for(const P in N){const L=j[P],B=T[P];if(m.hasOwnProperty(P))continue;let I=!1;x$(L)&&x$(B)?I=!fSe(L,B):I=L!==B,I?L!=null?_(P):h.add(P):L!==void 0&&h.has(P)?_(P):w.protectedKeys[P]=!0}w.prevProp=x,w.prevResolvedValues=j,w.isActive&&(m={...m,...j}),i&&e.blockInitialAnimation&&(E=!1),E&&(!(k&&C)||R)&&f.push(...A.map(P=>({animation:P,options:{type:y}})))}if(h.size){const v={};h.forEach(y=>{const w=e.getBaseTarget(y),x=e.getValue(y);x&&(x.liveStyle=!0),v[y]=w??null}),f.push({animation:v})}let b=!!f.length;return i&&(u.initial===!1||u.initial===u.animate)&&!e.manuallyAnimateOnMount&&(b=!1),i=!1,b?t(f):Promise.resolve()}function l(c,u){var d;if(n[c].isActive===u)return Promise.resolve();(d=e.variantChildren)===null||d===void 0||d.forEach(h=>{var m;return(m=h.animationState)===null||m===void 0?void 0:m.setActive(c,u)}),n[c].isActive=u;const f=a(c);for(const h in n)n[h].protectedKeys={};return f}return{animateChanges:a,setActive:l,setAnimateFunction:s,getState:()=>n,reset:()=>{n=oX(),i=!0}}}function bGe(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!fSe(t,e):!1}function Jg(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function oX(){return{animate:Jg(!0),whileInView:Jg(),whileHover:Jg(),whileTap:Jg(),whileDrag:Jg(),whileFocus:Jg(),exit:Jg()}}class Ag{constructor(t){this.isMounted=!1,this.node=t}update(){}}class yGe extends Ag{constructor(t){super(t),t.animationState||(t.animationState=gGe(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();MI(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)===null||t===void 0||t.call(this)}}let vGe=0;class xGe extends Ag{constructor(){super(...arguments),this.id=vGe++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const r=this.node.animationState.setActive("exit",!t);n&&!t&&r.then(()=>n(this.id))}mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}const wGe={animation:{Feature:yGe},exit:{Feature:xGe}},md={x:!1,y:!1};function YSe(){return md.x||md.y}function OGe(e){return e==="x"||e==="y"?md[e]?null:(md[e]=!0,()=>{md[e]=!1}):md.x||md.y?null:(md.x=md.y=!0,()=>{md.x=md.y=!1})}const bU=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function zS(e,t,n,i={passive:!0}){return e.addEventListener(t,n,i),()=>e.removeEventListener(t,n)}function OC(e){return{point:{x:e.pageX,y:e.pageY}}}const kGe=e=>t=>bU(t)&&e(t,OC(t));function $k(e,t,n,i){return zS(e,t,kGe(n),i)}const aX=(e,t)=>Math.abs(e-t);function SGe(e,t){const n=aX(e.x,t.x),i=aX(e.y,t.y);return Math.sqrt(n**2+i**2)}class ZSe{constructor(t,n,{transformPagePoint:i,contextWindow:r,dragSnapToOrigin:s=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const f=R5(this.lastMoveEventInfo,this.history),h=this.startEvent!==null,m=SGe(f.offset,{x:0,y:0})>=3;if(!h&&!m)return;const{point:g}=f,{timestamp:b}=Ra;this.history.push({...g,timestamp:b});const{onStart:v,onMove:y}=this.handlers;h||(v&&v(this.lastMoveEvent,f),this.startEvent=this.lastMoveEvent),y&&y(this.lastMoveEvent,f)},this.handlePointerMove=(f,h)=>{this.lastMoveEvent=f,this.lastMoveEventInfo=N5(h,this.transformPagePoint),gs.update(this.updatePoint,!0)},this.handlePointerUp=(f,h)=>{this.end();const{onEnd:m,onSessionEnd:g,resumeAnimation:b}=this.handlers;if(this.dragSnapToOrigin&&b&&b(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const v=R5(f.type==="pointercancel"?this.lastMoveEventInfo:N5(h,this.transformPagePoint),this.history);this.startEvent&&m&&m(f,v),g&&g(f,v)},!bU(t))return;this.dragSnapToOrigin=s,this.handlers=n,this.transformPagePoint=i,this.contextWindow=r||window;const a=OC(t),l=N5(a,this.transformPagePoint),{point:c}=l,{timestamp:u}=Ra;this.history=[{...c,timestamp:u}];const{onSessionStart:d}=n;d&&d(t,R5(l,this.history)),this.removeListeners=wC($k(this.contextWindow,"pointermove",this.handlePointerMove),$k(this.contextWindow,"pointerup",this.handlePointerUp),$k(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),ng(this.updatePoint)}}function N5(e,t){return t?{point:t(e.point)}:e}function lX(e,t){return{x:e.x-t.x,y:e.y-t.y}}function R5({point:e},t){return{point:e,delta:lX(e,JSe(t)),offset:lX(e,EGe(t)),velocity:CGe(t,.1)}}function EGe(e){return e[0]}function JSe(e){return e[e.length-1]}function CGe(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,i=null;const r=JSe(e);for(;n>=0&&(i=e[n],!(r.timestamp-i.timestamp>Vh(t)));)n--;if(!i)return{x:0,y:0};const s=Hh(r.timestamp-i.timestamp);if(s===0)return{x:0,y:0};const a={x:(r.x-i.x)/s,y:(r.y-i.y)/s};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}const eEe=1e-4,TGe=1-eEe,AGe=1+eEe,tEe=.01,_Ge=0-tEe,jGe=0+tEe;function uu(e){return e.max-e.min}function NGe(e,t,n){return Math.abs(e-t)<=n}function cX(e,t,n,i=.5){e.origin=i,e.originPoint=Qs(t.min,t.max,e.origin),e.scale=uu(n)/uu(t),e.translate=Qs(n.min,n.max,e.origin)-e.originPoint,(e.scale>=TGe&&e.scale<=AGe||isNaN(e.scale))&&(e.scale=1),(e.translate>=_Ge&&e.translate<=jGe||isNaN(e.translate))&&(e.translate=0)}function Fk(e,t,n,i){cX(e.x,t.x,n.x,i?i.originX:void 0),cX(e.y,t.y,n.y,i?i.originY:void 0)}function uX(e,t,n){e.min=n.min+t.min,e.max=e.min+uu(t)}function RGe(e,t,n){uX(e.x,t.x,n.x),uX(e.y,t.y,n.y)}function dX(e,t,n){e.min=t.min-n.min,e.max=e.min+uu(t)}function Bk(e,t,n){dX(e.x,t.x,n.x),dX(e.y,t.y,n.y)}function IGe(e,{min:t,max:n},i){return t!==void 0&&en&&(e=i?Qs(n,e,i.max):Math.min(e,n)),e}function fX(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function PGe(e,{top:t,left:n,bottom:i,right:r}){return{x:fX(e.x,n,r),y:fX(e.y,t,i)}}function hX(e,t){let n=t.min-e.min,i=t.max-e.max;return t.max-t.mini?n=qx(t.min,t.max-i,e.min):i>r&&(n=qx(e.min,e.max-r,t.min)),ap(0,1,n)}function LGe(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const N$=.35;function $Ge(e=N$){return e===!1?e=0:e===!0&&(e=N$),{x:pX(e,"left","right"),y:pX(e,"top","bottom")}}function pX(e,t,n){return{min:mX(e,t),max:mX(e,n)}}function mX(e,t){return typeof e=="number"?e:e[t]||0}const gX=()=>({translate:0,scale:1,origin:0,originPoint:0}),Pv=()=>({x:gX(),y:gX()}),bX=()=>({min:0,max:0}),lo=()=>({x:bX(),y:bX()});function ku(e){return[e("x"),e("y")]}function nEe({top:e,left:t,right:n,bottom:i}){return{x:{min:t,max:n},y:{min:e,max:i}}}function FGe({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function BGe(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),i=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:i.y,right:i.x}}function I5(e){return e===void 0||e===1}function R$({scale:e,scaleX:t,scaleY:n}){return!I5(e)||!I5(t)||!I5(n)}function gb(e){return R$(e)||iEe(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function iEe(e){return yX(e.x)||yX(e.y)}function yX(e){return e&&e!=="0%"}function yN(e,t,n){const i=e-n,r=t*i;return n+r}function vX(e,t,n,i,r){return r!==void 0&&(e=yN(e,r,i)),yN(e,n,i)+t}function I$(e,t=0,n=1,i,r){e.min=vX(e.min,t,n,i,r),e.max=vX(e.max,t,n,i,r)}function rEe(e,{x:t,y:n}){I$(e.x,t.translate,t.scale,t.originPoint),I$(e.y,n.translate,n.scale,n.originPoint)}const xX=.999999999999,wX=1.0000000000001;function UGe(e,t,n,i=!1){const r=n.length;if(!r)return;t.x=t.y=1;let s,a;for(let l=0;lxX&&(t.x=1),t.yxX&&(t.y=1)}function Dv(e,t){e.min=e.min+t,e.max=e.max+t}function OX(e,t,n,i,r=.5){const s=Qs(e.min,e.max,r);I$(e,t,n,s,i)}function Mv(e,t){OX(e.x,t.x,t.scaleX,t.scale,t.originX),OX(e.y,t.y,t.scaleY,t.scale,t.originY)}function sEe(e,t){return nEe(BGe(e.getBoundingClientRect(),t))}function QGe(e,t,n){const i=sEe(e,n),{scroll:r}=t;return r&&(Dv(i.x,r.offset.x),Dv(i.y,r.offset.y)),i}const oEe=({current:e})=>e?e.ownerDocument.defaultView:null,zGe=new WeakMap;class VGe{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=lo(),this.visualElement=t}start(t,{snapToCursor:n=!1}={}){const{presenceContext:i}=this.visualElement;if(i&&i.isPresent===!1)return;const r=d=>{const{dragSnapToOrigin:f}=this.getProps();f?this.pauseAnimation():this.stopAnimation(),n&&this.snapToCursor(OC(d).point)},s=(d,f)=>{const{drag:h,dragPropagation:m,onDragStart:g}=this.getProps();if(h&&!m&&(this.openDragLock&&this.openDragLock(),this.openDragLock=OGe(h),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),ku(v=>{let y=this.getAxisMotionValue(v).get()||0;if(Nf.test(y)){const{projection:w}=this.visualElement;if(w&&w.layout){const x=w.layout.layoutBox[v];x&&(y=uu(x)*(parseFloat(y)/100))}}this.originPoint[v]=y}),g&&gs.postRender(()=>g(d,f)),w$(this.visualElement,"transform");const{animationState:b}=this.visualElement;b&&b.setActive("whileDrag",!0)},a=(d,f)=>{const{dragPropagation:h,dragDirectionLock:m,onDirectionLock:g,onDrag:b}=this.getProps();if(!h&&!this.openDragLock)return;const{offset:v}=f;if(m&&this.currentDirection===null){this.currentDirection=HGe(v),this.currentDirection!==null&&g&&g(this.currentDirection);return}this.updateAxis("x",f.point,v),this.updateAxis("y",f.point,v),this.visualElement.render(),b&&b(d,f)},l=(d,f)=>this.stop(d,f),c=()=>ku(d=>{var f;return this.getAnimationState(d)==="paused"&&((f=this.getAxisMotionValue(d).animation)===null||f===void 0?void 0:f.play())}),{dragSnapToOrigin:u}=this.getProps();this.panSession=new ZSe(t,{onSessionStart:r,onStart:s,onMove:a,onSessionEnd:l,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:u,contextWindow:oEe(this.visualElement)})}stop(t,n){const i=this.isDragging;if(this.cancel(),!i)return;const{velocity:r}=n;this.startAnimation(r);const{onDragEnd:s}=this.getProps();s&&gs.postRender(()=>s(t,n))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,i){const{drag:r}=this.getProps();if(!i||!k2(t,r,this.currentDirection))return;const s=this.getAxisMotionValue(t);let a=this.originPoint[t]+i[t];this.constraints&&this.constraints[t]&&(a=IGe(a,this.constraints[t],this.elastic[t])),s.set(a)}resolveConstraints(){var t;const{dragConstraints:n,dragElastic:i}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(t=this.visualElement.projection)===null||t===void 0?void 0:t.layout,s=this.constraints;n&&Rv(n)?this.constraints||(this.constraints=this.resolveRefConstraints()):n&&r?this.constraints=PGe(r.layoutBox,n):this.constraints=!1,this.elastic=$Ge(i),s!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&ku(a=>{this.constraints!==!1&&this.getAxisMotionValue(a)&&(this.constraints[a]=LGe(r.layoutBox[a],this.constraints[a]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Rv(t))return!1;const i=t.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;const s=QGe(i,r.root,this.visualElement.getTransformPagePoint());let a=DGe(r.layout.layoutBox,s);if(n){const l=n(FGe(a));this.hasMutatedConstraints=!!l,l&&(a=nEe(l))}return a}startAnimation(t){const{drag:n,dragMomentum:i,dragElastic:r,dragTransition:s,dragSnapToOrigin:a,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},u=ku(d=>{if(!k2(d,n,this.currentDirection))return;let f=c&&c[d]||{};a&&(f={min:0,max:0});const h=r?200:1e6,m=r?40:1e7,g={type:"inertia",velocity:i?t[d]:0,bounceStiffness:h,bounceDamping:m,timeConstant:750,restDelta:1,restSpeed:10,...s,...f};return this.startAxisValueAnimation(d,g)});return Promise.all(u).then(l)}startAxisValueAnimation(t,n){const i=this.getAxisMotionValue(t);return w$(this.visualElement,t),i.start(gU(t,i,0,n,this.visualElement,!1))}stopAnimation(){ku(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){ku(t=>{var n;return(n=this.getAxisMotionValue(t).animation)===null||n===void 0?void 0:n.pause()})}getAnimationState(t){var n;return(n=this.getAxisMotionValue(t).animation)===null||n===void 0?void 0:n.state}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,i=this.visualElement.getProps(),r=i[n];return r||this.visualElement.getValue(t,(i.initial?i.initial[t]:void 0)||0)}snapToCursor(t){ku(n=>{const{drag:i}=this.getProps();if(!k2(n,i,this.currentDirection))return;const{projection:r}=this.visualElement,s=this.getAxisMotionValue(n);if(r&&r.layout){const{min:a,max:l}=r.layout.layoutBox[n];s.set(t[n]-Qs(a,l,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:i}=this.visualElement;if(!Rv(n)||!i||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};ku(a=>{const l=this.getAxisMotionValue(a);if(l&&this.constraints!==!1){const c=l.get();r[a]=MGe({min:c,max:c},this.constraints[a])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),ku(a=>{if(!k2(a,t,null))return;const l=this.getAxisMotionValue(a),{min:c,max:u}=this.constraints[a];l.set(Qs(c,u,r[a]))})}addListeners(){if(!this.visualElement.current)return;zGe.set(this.visualElement,this);const t=this.visualElement.current,n=$k(t,"pointerdown",c=>{const{drag:u,dragListener:d=!0}=this.getProps();u&&d&&this.start(c)}),i=()=>{const{dragConstraints:c}=this.getProps();Rv(c)&&c.current&&(this.constraints=this.resolveRefConstraints())},{projection:r}=this.visualElement,s=r.addEventListener("measure",i);r&&!r.layout&&(r.root&&r.root.updateScroll(),r.updateLayout()),gs.read(i);const a=zS(window,"resize",()=>this.scalePositionWithinConstraints()),l=r.addEventListener("didUpdate",({delta:c,hasLayoutChanged:u})=>{this.isDragging&&u&&(ku(d=>{const f=this.getAxisMotionValue(d);f&&(this.originPoint[d]+=c[d].translate,f.set(f.get()+c[d].translate))}),this.visualElement.render())});return()=>{a(),n(),s(),l&&l()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:i=!1,dragPropagation:r=!1,dragConstraints:s=!1,dragElastic:a=N$,dragMomentum:l=!0}=t;return{...t,drag:n,dragDirectionLock:i,dragPropagation:r,dragConstraints:s,dragElastic:a,dragMomentum:l}}}function k2(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function HGe(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class qGe extends Ag{constructor(t){super(t),this.removeGroupControls=nu,this.removeListeners=nu,this.controls=new VGe(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||nu}unmount(){this.removeGroupControls(),this.removeListeners()}}const kX=e=>(t,n)=>{e&&gs.postRender(()=>e(t,n))};class WGe extends Ag{constructor(){super(...arguments),this.removePointerDownListener=nu}onPointerDown(t){this.session=new ZSe(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:oEe(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:i,onPanEnd:r}=this.node.getProps();return{onSessionStart:kX(t),onStart:kX(n),onMove:i,onEnd:(s,a)=>{delete this.session,r&&gs.postRender(()=>r(s,a))}}}mount(){this.removePointerDownListener=$k(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const I_={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function SX(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const nO={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(Mn.test(e))e=parseFloat(e);else return e;const n=SX(e,t.target.x),i=SX(e,t.target.y);return`${n}% ${i}%`}},KGe={correct:(e,{treeScale:t,projectionDelta:n})=>{const i=e,r=ig.parse(e);if(r.length>5)return i;const s=ig.createTransformer(e),a=typeof r[0]!="number"?1:0,l=n.x.scale*t.x,c=n.y.scale*t.y;r[0+a]/=l,r[1+a]/=c;const u=Qs(l,c,.5);return typeof r[2+a]=="number"&&(r[2+a]/=u),typeof r[3+a]=="number"&&(r[3+a]/=u),s(r)}};class GGe extends p.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i,layoutId:r}=this.props,{projection:s}=t;wWe(XGe),s&&(n.group&&n.group.add(s),i&&i.register&&r&&i.register(s),s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,onExitComplete:()=>this.safeToRemove()})),I_.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:i,drag:r,isPresent:s}=this.props,a=i.projection;return a&&(a.isPresent=s,r||t.layoutDependency!==n||n===void 0?a.willUpdate():this.safeToRemove(),t.isPresent!==s&&(s?a.promote():a.relegate()||gs.postRender(()=>{const l=a.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),H7.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i}=this.props,{projection:r}=t;r&&(r.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(r),i&&i.deregister&&i.deregister(r))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function aEe(e){const[t,n]=Vke(),i=p.useContext(B7);return o.jsx(GGe,{...e,layoutGroup:i,switchLayoutGroup:p.useContext(Jke),isPresent:t,safeToRemove:n})}const XGe={borderRadius:{...nO,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:nO,borderTopRightRadius:nO,borderBottomLeftRadius:nO,borderBottomRightRadius:nO,boxShadow:KGe};function YGe(e,t,n){const i=ll(e)?e:US(e);return i.start(gU("",i,t,n)),i.animation}function ZGe(e){return e instanceof SVGElement&&e.tagName!=="svg"}const JGe=(e,t)=>e.depth-t.depth;class eXe{constructor(){this.children=[],this.isDirty=!1}add(t){nU(this.children,t),this.isDirty=!0}remove(t){iU(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(JGe),this.isDirty=!1,this.children.forEach(t)}}function tXe(e,t){const n=Rf.now(),i=({timestamp:r})=>{const s=r-n;s>=t&&(ng(i),e(s-t))};return gs.read(i,!0),()=>ng(i)}const lEe=["TopLeft","TopRight","BottomLeft","BottomRight"],nXe=lEe.length,EX=e=>typeof e=="string"?parseFloat(e):e,CX=e=>typeof e=="number"||Mn.test(e);function iXe(e,t,n,i,r,s){r?(e.opacity=Qs(0,n.opacity!==void 0?n.opacity:1,rXe(i)),e.opacityExit=Qs(t.opacity!==void 0?t.opacity:1,0,sXe(i))):s&&(e.opacity=Qs(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,i));for(let a=0;ait?1:n(qx(e,t,i))}function AX(e,t){e.min=t.min,e.max=t.max}function Ou(e,t){AX(e.x,t.x),AX(e.y,t.y)}function _X(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}function jX(e,t,n,i,r){return e-=t,e=yN(e,1/n,i),r!==void 0&&(e=yN(e,1/r,i)),e}function oXe(e,t=0,n=1,i=.5,r,s=e,a=e){if(Nf.test(t)&&(t=parseFloat(t),t=Qs(a.min,a.max,t/100)-a.min),typeof t!="number")return;let l=Qs(s.min,s.max,i);e===s&&(l-=t),e.min=jX(e.min,t,n,l,r),e.max=jX(e.max,t,n,l,r)}function NX(e,t,[n,i,r],s,a){oXe(e,t[n],t[i],t[r],t.scale,s,a)}const aXe=["x","scaleX","originX"],lXe=["y","scaleY","originY"];function RX(e,t,n,i){NX(e.x,t,aXe,n?n.x:void 0,i?i.x:void 0),NX(e.y,t,lXe,n?n.y:void 0,i?i.y:void 0)}function IX(e){return e.translate===0&&e.scale===1}function uEe(e){return IX(e.x)&&IX(e.y)}function PX(e,t){return e.min===t.min&&e.max===t.max}function cXe(e,t){return PX(e.x,t.x)&&PX(e.y,t.y)}function DX(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function dEe(e,t){return DX(e.x,t.x)&&DX(e.y,t.y)}function MX(e){return uu(e.x)/uu(e.y)}function LX(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}class uXe{constructor(){this.members=[]}add(t){nU(this.members,t),t.scheduleRender()}remove(t){if(iU(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(r=>t===r);if(n===0)return!1;let i;for(let r=n;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1){i=s;break}}return i?(this.promote(i),!0):!1}promote(t,n){const i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,n&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:r}=t.options;r===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:i}=t;n.onExitComplete&&n.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function dXe(e,t,n){let i="";const r=e.x.translate/t.x,s=e.y.translate/t.y,a=(n==null?void 0:n.z)||0;if((r||s||a)&&(i=`translate3d(${r}px, ${s}px, ${a}px) `),(t.x!==1||t.y!==1)&&(i+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:u,rotate:d,rotateX:f,rotateY:h,skewX:m,skewY:g}=n;u&&(i=`perspective(${u}px) ${i}`),d&&(i+=`rotate(${d}deg) `),f&&(i+=`rotateX(${f}deg) `),h&&(i+=`rotateY(${h}deg) `),m&&(i+=`skewX(${m}deg) `),g&&(i+=`skewY(${g}deg) `)}const l=e.x.scale*t.x,c=e.y.scale*t.y;return(l!==1||c!==1)&&(i+=`scale(${l}, ${c})`),i||"none"}const bb={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},YO=typeof window<"u"&&window.MotionDebug!==void 0,P5=["","X","Y","Z"],fXe={visibility:"hidden"},$X=1e3;let hXe=0;function D5(e,t,n,i){const{latestValues:r}=t;r[e]&&(n[e]=r[e],t.setStaticValue(e,0),i&&(i[e]=0))}function fEe(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=mSe(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:r,layoutId:s}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",gs,!(r||s))}const{parent:i}=e;i&&!i.hasCheckedOptimisedAppear&&fEe(i)}function hEe({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:i,resetTransform:r}){return class{constructor(a={},l=t==null?void 0:t()){this.id=hXe++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,YO&&(bb.totalNodes=bb.resolvedTargetDeltas=bb.recalculatedProjection=0),this.nodes.forEach(gXe),this.nodes.forEach(wXe),this.nodes.forEach(OXe),this.nodes.forEach(bXe),YO&&window.MotionDebug.record(bb)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=a,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0;for(let c=0;cthis.root.updateBlockedByResize=!1;e(a,()=>{this.root.updateBlockedByResize=!0,f&&f(),f=tXe(h,250),I_.hasAnimatedSinceResize&&(I_.hasAnimatedSinceResize=!1,this.nodes.forEach(BX))})}c&&this.root.registerSharedNode(c,this),this.options.animate!==!1&&d&&(c||u)&&this.addEventListener("didUpdate",({delta:f,hasLayoutChanged:h,hasRelativeTargetChanged:m,layout:g})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const b=this.options.transition||d.getDefaultTransition()||TXe,{onLayoutAnimationStart:v,onLayoutAnimationComplete:y}=d.getProps(),w=!this.targetLayout||!dEe(this.targetLayout,g)||m,x=!h&&m;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||x||h&&(w||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(f,x);const O={...tU(b,"layout"),onPlay:v,onComplete:y};(d.shouldReduceMotion||this.options.layoutRoot)&&(O.delay=0,O.type=!1),this.startAnimation(O)}else h||BX(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=g})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const a=this.getStack();a&&a.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,ng(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(kXe),this.animationId++)}getTransformTemplate(){const{visualElement:a}=this.options;return a&&a.getProps().transformTemplate}willUpdate(a=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&fEe(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c{const S=O/1e3;UX(f.x,a.x,S),UX(f.y,a.y,S),this.setTargetDelta(f),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Bk(h,this.layout.layoutBox,this.relativeParent.layout.layoutBox),EXe(this.relativeTarget,this.relativeTargetOrigin,h,S),x&&cXe(this.relativeTarget,x)&&(this.isProjectionDirty=!1),x||(x=lo()),Ou(x,this.relativeTarget)),b&&(this.animationValues=d,iXe(d,u,this.latestValues,S,w,y)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(a){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(ng(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=gs.update(()=>{I_.hasAnimatedSinceResize=!0,this.currentAnimation=YGe(0,$X,{...a,onUpdate:l=>{this.mixTargetDelta(l),a.onUpdate&&a.onUpdate(l)},onComplete:()=>{a.onComplete&&a.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const a=this.getStack();a&&a.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta($X),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const a=this.getLead();let{targetWithTransforms:l,target:c,layout:u,latestValues:d}=a;if(!(!l||!c||!u)){if(this!==a&&this.layout&&u&&pEe(this.options.animationType,this.layout.layoutBox,u.layoutBox)){c=this.target||lo();const f=uu(this.layout.layoutBox.x);c.x.min=a.target.x.min,c.x.max=c.x.min+f;const h=uu(this.layout.layoutBox.y);c.y.min=a.target.y.min,c.y.max=c.y.min+h}Ou(l,c),Mv(l,d),Fk(this.projectionDeltaWithTransform,this.layoutCorrected,l,d)}}registerSharedNode(a,l){this.sharedNodes.has(a)||this.sharedNodes.set(a,new uXe),this.sharedNodes.get(a).add(l);const u=l.options.initialPromotionConfig;l.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(l):void 0})}isLead(){const a=this.getStack();return a?a.lead===this:!0}getLead(){var a;const{layoutId:l}=this.options;return l?((a=this.getStack())===null||a===void 0?void 0:a.lead)||this:this}getPrevLead(){var a;const{layoutId:l}=this.options;return l?(a=this.getStack())===null||a===void 0?void 0:a.prevLead:void 0}getStack(){const{layoutId:a}=this.options;if(a)return this.root.sharedNodes.get(a)}promote({needsReset:a,transition:l,preserveFollowOpacity:c}={}){const u=this.getStack();u&&u.promote(this,c),a&&(this.projectionDelta=void 0,this.needsReset=!0),l&&this.setOptions({transition:l})}relegate(){const a=this.getStack();return a?a.relegate(this):!1}resetSkewAndRotation(){const{visualElement:a}=this.options;if(!a)return;let l=!1;const{latestValues:c}=a;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(l=!0),!l)return;const u={};c.z&&D5("z",a,u,this.animationValues);for(let d=0;d{var l;return(l=a.currentAnimation)===null||l===void 0?void 0:l.stop()}),this.root.nodes.forEach(FX),this.root.sharedNodes.clear()}}}function pXe(e){e.updateLayout()}function mXe(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&n&&e.hasListeners("didUpdate")){const{layoutBox:i,measuredBox:r}=e.layout,{animationType:s}=e.options,a=n.source!==e.layout.source;s==="size"?ku(f=>{const h=a?n.measuredBox[f]:n.layoutBox[f],m=uu(h);h.min=i[f].min,h.max=h.min+m}):pEe(s,n.layoutBox,i)&&ku(f=>{const h=a?n.measuredBox[f]:n.layoutBox[f],m=uu(i[f]);h.max=h.min+m,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[f].max=e.relativeTarget[f].min+m)});const l=Pv();Fk(l,i,n.layoutBox);const c=Pv();a?Fk(c,e.applyTransform(r,!0),n.measuredBox):Fk(c,i,n.layoutBox);const u=!uEe(l);let d=!1;if(!e.resumeFrom){const f=e.getClosestProjectingParent();if(f&&!f.resumeFrom){const{snapshot:h,layout:m}=f;if(h&&m){const g=lo();Bk(g,n.layoutBox,h.layoutBox);const b=lo();Bk(b,i,m.layoutBox),dEe(g,b)||(d=!0),f.options.layoutRoot&&(e.relativeTarget=b,e.relativeTargetOrigin=g,e.relativeParent=f)}}}e.notifyListeners("didUpdate",{layout:i,snapshot:n,delta:c,layoutDelta:l,hasLayoutChanged:u,hasRelativeTargetChanged:d})}else if(e.isLead()){const{onExitComplete:i}=e.options;i&&i()}e.options.transition=void 0}function gXe(e){YO&&bb.totalNodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function bXe(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function yXe(e){e.clearSnapshot()}function FX(e){e.clearMeasurements()}function vXe(e){e.isLayoutDirty=!1}function xXe(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function BX(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function wXe(e){e.resolveTargetDelta()}function OXe(e){e.calcProjection()}function kXe(e){e.resetSkewAndRotation()}function SXe(e){e.removeLeadSnapshot()}function UX(e,t,n){e.translate=Qs(t.translate,0,n),e.scale=Qs(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function QX(e,t,n,i){e.min=Qs(t.min,n.min,i),e.max=Qs(t.max,n.max,i)}function EXe(e,t,n,i){QX(e.x,t.x,n.x,i),QX(e.y,t.y,n.y,i)}function CXe(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const TXe={duration:.45,ease:[.4,0,.1,1]},zX=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),VX=zX("applewebkit/")&&!zX("chrome/")?Math.round:nu;function HX(e){e.min=VX(e.min),e.max=VX(e.max)}function AXe(e){HX(e.x),HX(e.y)}function pEe(e,t,n){return e==="position"||e==="preserve-aspect"&&!NGe(MX(t),MX(n),.2)}function _Xe(e){var t;return e!==e.root&&((t=e.scroll)===null||t===void 0?void 0:t.wasRoot)}const jXe=hEe({attachResizeListener:(e,t)=>zS(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),M5={current:void 0},mEe=hEe({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!M5.current){const e=new jXe({});e.mount(window),e.setOptions({layoutScroll:!0}),M5.current=e}return M5.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),NXe={pan:{Feature:WGe},drag:{Feature:qGe,ProjectionNode:mEe,MeasureLayout:aEe}};function RXe(e,t,n){var i;if(e instanceof Element)return[e];if(typeof e=="string"){let r=document;const s=(i=void 0)!==null&&i!==void 0?i:r.querySelectorAll(e);return s?Array.from(s):[]}return Array.from(e)}function gEe(e,t){const n=RXe(e),i=new AbortController,r={passive:!0,...t,signal:i.signal};return[n,r,()=>i.abort()]}function qX(e){return t=>{t.pointerType==="touch"||YSe()||e(t)}}function IXe(e,t,n={}){const[i,r,s]=gEe(e,n),a=qX(l=>{const{target:c}=l,u=t(l);if(typeof u!="function"||!c)return;const d=qX(f=>{u(f),c.removeEventListener("pointerleave",d)});c.addEventListener("pointerleave",d,r)});return i.forEach(l=>{l.addEventListener("pointerenter",a,r)}),s}function WX(e,t,n){const{props:i}=e;e.animationState&&i.whileHover&&e.animationState.setActive("whileHover",n==="Start");const r="onHover"+n,s=i[r];s&&gs.postRender(()=>s(t,OC(t)))}class PXe extends Ag{mount(){const{current:t}=this.node;t&&(this.unmount=IXe(t,n=>(WX(this.node,n,"Start"),i=>WX(this.node,i,"End"))))}unmount(){}}class DXe extends Ag{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=wC(zS(this.node.current,"focus",()=>this.onFocus()),zS(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const bEe=(e,t)=>t?e===t?!0:bEe(e,t.parentElement):!1,MXe=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function LXe(e){return MXe.has(e.tagName)||e.tabIndex!==-1}const ZO=new WeakSet;function KX(e){return t=>{t.key==="Enter"&&e(t)}}function L5(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const $Xe=(e,t)=>{const n=e.currentTarget;if(!n)return;const i=KX(()=>{if(ZO.has(n))return;L5(n,"down");const r=KX(()=>{L5(n,"up")}),s=()=>L5(n,"cancel");n.addEventListener("keyup",r,t),n.addEventListener("blur",s,t)});n.addEventListener("keydown",i,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",i),t)};function GX(e){return bU(e)&&!YSe()}function FXe(e,t,n={}){const[i,r,s]=gEe(e,n),a=l=>{const c=l.currentTarget;if(!GX(l)||ZO.has(c))return;ZO.add(c);const u=t(l),d=(m,g)=>{window.removeEventListener("pointerup",f),window.removeEventListener("pointercancel",h),!(!GX(m)||!ZO.has(c))&&(ZO.delete(c),typeof u=="function"&&u(m,{success:g}))},f=m=>{d(m,n.useGlobalTarget||bEe(c,m.target))},h=m=>{d(m,!1)};window.addEventListener("pointerup",f,r),window.addEventListener("pointercancel",h,r)};return i.forEach(l=>{!LXe(l)&&l.getAttribute("tabindex")===null&&(l.tabIndex=0),(n.useGlobalTarget?window:l).addEventListener("pointerdown",a,r),l.addEventListener("focus",u=>$Xe(u,r),r)}),s}function XX(e,t,n){const{props:i}=e;e.animationState&&i.whileTap&&e.animationState.setActive("whileTap",n==="Start");const r="onTap"+(n==="End"?"":n),s=i[r];s&&gs.postRender(()=>s(t,OC(t)))}class BXe extends Ag{mount(){const{current:t}=this.node;t&&(this.unmount=FXe(t,n=>(XX(this.node,n,"Start"),(i,{success:r})=>XX(this.node,i,r?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const P$=new WeakMap,$5=new WeakMap,UXe=e=>{const t=P$.get(e.target);t&&t(e)},QXe=e=>{e.forEach(UXe)};function zXe({root:e,...t}){const n=e||document;$5.has(n)||$5.set(n,{});const i=$5.get(n),r=JSON.stringify(t);return i[r]||(i[r]=new IntersectionObserver(QXe,{root:e,...t})),i[r]}function VXe(e,t,n){const i=zXe(t);return P$.set(e,n),i.observe(e),()=>{P$.delete(e),i.unobserve(e)}}const HXe={some:0,all:1};class qXe extends Ag{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:i,amount:r="some",once:s}=t,a={root:n?n.current:void 0,rootMargin:i,threshold:typeof r=="number"?r:HXe[r]},l=c=>{const{isIntersecting:u}=c;if(this.isInView===u||(this.isInView=u,s&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:d,onViewportLeave:f}=this.node.getProps(),h=u?d:f;h&&h(c)};return VXe(this.node.current,a,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(WXe(t,n))&&this.startObserver()}unmount(){}}function WXe({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const KXe={inView:{Feature:qXe},tap:{Feature:BXe},focus:{Feature:DXe},hover:{Feature:PXe}},GXe={layout:{ProjectionNode:mEe,MeasureLayout:aEe}},vN={current:null},yU={current:!1};function yEe(){if(yU.current=!0,!!U7)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>vN.current=e.matches;e.addListener(t),t()}else vN.current=!1}const XXe=[...FSe,sl,ig],YXe=e=>XXe.find($Se(e)),YX=new WeakMap;function ZXe(e,t,n){for(const i in t){const r=t[i],s=n[i];if(ll(r))e.addValue(i,r);else if(ll(s))e.addValue(i,US(r,{owner:e}));else if(s!==r)if(e.hasValue(i)){const a=e.getValue(i);a.liveStyle===!0?a.jump(r):a.hasAnimated||a.set(r)}else{const a=e.getStaticValue(i);e.addValue(i,US(a!==void 0?a:r,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const ZX=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class JXe{scrapeMotionValuesFromProps(t,n,i){return{}}constructor({parent:t,props:n,presenceContext:i,reducedMotionConfig:r,blockInitialAnimation:s,visualState:a},l={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=hU,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const m=Rf.now();this.renderScheduledAtthis.bindToMotionValue(i,n)),yU.current||yEe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:vN.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){YX.delete(this.current),this.projection&&this.projection.unmount(),ng(this.notifyUpdate),ng(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const n=this.features[t];n&&(n.unmount(),n.isMounted=!1)}this.current=null}bindToMotionValue(t,n){this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)();const i=Hy.has(t),r=n.on("change",l=>{this.latestValues[t]=l,this.props.onUpdate&&gs.preRender(this.notifyUpdate),i&&this.projection&&(this.projection.isTransformDirty=!0)}),s=n.on("renderRequest",this.scheduleRender);let a;window.MotionCheckAppearSync&&(a=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{r(),s(),a&&a(),n.owner&&n.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in Hx){const n=Hx[t];if(!n)continue;const{isEnabled:i,Feature:r}=n;if(!this.features[t]&&r&&i(this.props)&&(this.features[t]=new r(this)),this.features[t]){const s=this.features[t];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):lo()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let i=0;in.variantChildren.delete(t)}addValue(t,n){const i=this.values.get(t);n!==i&&(i&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let i=this.values.get(t);return i===void 0&&n!==void 0&&(i=US(n===null?void 0:n,{owner:this}),this.addValue(t,i)),i}readValue(t,n){var i;let r=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(i=this.getBaseTargetFromProps(this.props,t))!==null&&i!==void 0?i:this.readValueFromInstance(this.current,t,this.options);return r!=null&&(typeof r=="string"&&(MSe(r)||TSe(r))?r=parseFloat(r):!YXe(r)&&ig.test(n)&&(r=ISe(t,n)),this.setBaseTarget(t,ll(r)?r.get():r)),ll(r)?r.get():r}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var n;const{initial:i}=this.props;let r;if(typeof i=="string"||typeof i=="object"){const a=W7(this.props,i,(n=this.presenceContext)===null||n===void 0?void 0:n.custom);a&&(r=a[t])}if(i&&r!==void 0)return r;const s=this.getBaseTargetFromProps(this.props,t);return s!==void 0&&!ll(s)?s:this.initialValues[t]!==void 0&&r===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new rU),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class vEe extends JXe{constructor(){super(...arguments),this.KeyframeResolver=BSe}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){return t.style?t.style[n]:void 0}removeValueFromRenderState(t,{vars:n,style:i}){delete n[t],delete i[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;ll(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}function eYe(e){return window.getComputedStyle(e)}class tYe extends vEe{constructor(){super(...arguments),this.type="html",this.renderInstance=oSe}readValueFromInstance(t,n){if(Hy.has(n)){const i=fU(n);return i&&i.default||0}else{const i=eYe(t),r=(iSe(n)?i.getPropertyValue(n):i[n])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(t,{transformPagePoint:n}){return sEe(t,n)}build(t,n,i){X7(t,n,i.transformTemplate)}scrapeMotionValuesFromProps(t,n,i){return eU(t,n,i)}}class nYe extends vEe{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=lo}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Hy.has(n)){const i=fU(n);return i&&i.default||0}return n=aSe.has(n)?n:V7(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,i){return uSe(t,n,i)}build(t,n,i){Y7(t,n,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,i,r){lSe(t,n,i,r)}mount(t){this.isSVGTag=J7(t.tagName),super.mount(t)}}const iYe=(e,t)=>q7(e)?new nYe(t):new tYe(t,{allowProjection:e!==p.Fragment}),rYe=jWe({...wGe,...KXe,...NXe,...GXe},iYe),cr=Hqe(rYe);function BI(){!yU.current&&yEe();const[e]=p.useState(vN.current);return e}function Yo(){return Yo=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||/ServerSideRendering/.test(navigator&&navigator.userAgent)?p.useEffect:p.useLayoutEffect;function ov(e,t,n){var i=p.useRef(t);i.current=t,p.useEffect(function(){function r(s){i.current(s)}return e&&window.addEventListener(e,r,n),function(){e&&window.removeEventListener(e,r)}},[e])}var sYe=["container"];function oYe(e){var t=e.container,n=t===void 0?document.body:t,i=UI(e,sYe);return si.createPortal(yi.createElement("div",Yo({},i)),n)}function aYe(e){return yi.createElement("svg",Yo({width:"44",height:"44",viewBox:"0 0 768 768"},e),yi.createElement("path",{d:"M607.5 205.5l-178.5 178.5 178.5 178.5-45 45-178.5-178.5-178.5 178.5-45-45 178.5-178.5-178.5-178.5 45-45 178.5 178.5 178.5-178.5z"}))}function lYe(e){return yi.createElement("svg",Yo({width:"44",height:"44",viewBox:"0 0 768 768"},e),yi.createElement("path",{d:"M640.5 352.5v63h-390l178.5 180-45 45-256.5-256.5 256.5-256.5 45 45-178.5 180h390z"}))}function cYe(e){return yi.createElement("svg",Yo({width:"44",height:"44",viewBox:"0 0 768 768"},e),yi.createElement("path",{d:"M384 127.5l256.5 256.5-256.5 256.5-45-45 178.5-180h-390v-63h390l-178.5-180z"}))}function uYe(){return p.useEffect(function(){var e=document.body.style,t=e.overflow;return e.overflow="hidden",function(){e.overflow=t}},[]),null}function eY(e){var t=e.touches[0],n=t.clientX,i=t.clientY;if(e.touches.length>=2){var r=e.touches[1],s=r.clientX,a=r.clientY;return[(n+s)/2,(i+a)/2,Math.sqrt(Math.pow(s-n,2)+Math.pow(a-i,2))]}return[n,i,0]}var am=function(e,t,n,i){var r,s=n*t,a=(s-i)/2,l=e;return s<=i?(r=1,l=0):e>0&&a-e<=0?(r=2,l=a):e<0&&a+e<=0&&(r=3,l=-a),[r,l]};function F5(e,t,n,i,r,s,a,l,c,u){a===void 0&&(a=innerWidth/2),l===void 0&&(l=innerHeight/2),c===void 0&&(c=0),u===void 0&&(u=0);var d=am(e,s,n,innerWidth)[0],f=am(t,s,i,innerHeight),h=innerWidth/2,m=innerHeight/2;return{x:a-s/r*(a-(h+e))-h+(i/n>=3&&n*s===innerWidth?0:d?c/2:c),y:l-s/r*(l-(m+t))-m+(f[0]?u/2:u),lastCX:a,lastCY:l}}function L$(e,t,n){var i=e%180!=0;return i?[n,t,i]:[t,n,i]}function B5(e,t,n){var i=L$(n,innerWidth,innerHeight),r=i[0],s=i[1],a=0,l=r,c=s,u=e/t*s,d=t/e*r;return e=s?l=u:e>=r&&tr/s?c=d:t/e>=3&&!i[2]?a=((c=d)-s)/2:l=u,{width:l,height:c,x:0,y:a,pause:!0}}function E2(e,t){var n=t.leading,i=n!==void 0&&n,r=t.maxWait,s=t.wait,a=s===void 0?r||0:s,l=p.useRef(e);l.current=e;var c=p.useRef(0),u=p.useRef(),d=function(){return u.current&&clearTimeout(u.current)},f=p.useCallback(function(){var h=[].slice.call(arguments),m=Date.now();function g(){c.current=m,d(),l.current.apply(null,h)}var b=c.current,v=m-b;if(b===0&&(i&&g(),c.current=m),r!==void 0){if(v>r)return void g()}else v=1&&s&&s())};d()}function d(){c=requestAnimationFrame(u)}}var fYe={T:0,L:0,W:0,H:0,FIT:void 0},wEe=function(){var e=p.useRef(!1);return p.useEffect(function(){return e.current=!0,function(){e.current=!1}},[]),e},hYe=["className"];function pYe(e){var t=e.className,n=t===void 0?"":t,i=UI(e,hYe);return yi.createElement("div",Yo({className:"PhotoView__Spinner "+n},i),yi.createElement("svg",{viewBox:"0 0 32 32",width:"36",height:"36",fill:"white"},yi.createElement("path",{opacity:".25",d:"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"}),yi.createElement("path",{d:"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"})))}var mYe=["src","loaded","broken","className","onPhotoLoad","loadingElement","brokenElement"];function gYe(e){var t=e.src,n=e.loaded,i=e.broken,r=e.className,s=e.onPhotoLoad,a=e.loadingElement,l=e.brokenElement,c=UI(e,mYe),u=wEe();return t&&!i?yi.createElement(yi.Fragment,null,yi.createElement("img",Yo({className:"PhotoView__Photo"+(r?" "+r:""),src:t,onLoad:function(d){var f=d.target;u.current&&s({loaded:!0,naturalWidth:f.naturalWidth,naturalHeight:f.naturalHeight})},onError:function(){u.current&&s({broken:!0})},draggable:!1,alt:""},c)),!n&&(a?yi.createElement("span",{className:"PhotoView__icon"},a):yi.createElement(pYe,{className:"PhotoView__icon"}))):l?yi.createElement("span",{className:"PhotoView__icon"},typeof l=="function"?l({src:t}):l):null}var bYe={naturalWidth:void 0,naturalHeight:void 0,width:void 0,height:void 0,loaded:void 0,broken:!1,x:0,y:0,touched:!1,maskTouched:!1,rotate:0,scale:1,CX:0,CY:0,lastX:0,lastY:0,lastCX:0,lastCY:0,lastScale:1,touchTime:0,touchLength:0,pause:!0,stopRaf:!0,reach:void 0};function yYe(e){var t=e.item,n=t.src,i=t.render,r=t.width,s=r===void 0?0:r,a=t.height,l=a===void 0?0:a,c=t.originRef,u=e.visible,d=e.speed,f=e.easing,h=e.wrapClassName,m=e.className,g=e.style,b=e.loadingElement,v=e.brokenElement,y=e.onPhotoTap,w=e.onMaskTap,x=e.onReachMove,O=e.onReachUp,S=e.onPhotoResize,k=e.isActive,C=e.expose,E=xN(bYe),R=E[0],A=E[1],j=p.useRef(0),T=wEe(),N=R.naturalWidth,_=N===void 0?s:N,D=R.naturalHeight,M=D===void 0?l:D,P=R.width,L=P===void 0?s:P,B=R.height,I=B===void 0?l:B,z=R.loaded,K=z===void 0?!n:z,F=R.broken,q=R.x,H=R.y,X=R.touched,ne=R.stopRaf,Q=R.maskTouched,Z=R.rotate,ce=R.scale,Ee=R.CX,Y=R.CY,G=R.lastX,te=R.lastY,ue=R.lastCX,Ce=R.lastCY,se=R.lastScale,he=R.touchTime,ae=R.touchLength,Ae=R.pause,De=R.reach,ye=ty({onScale:function(Me){return Qe(S2(Me))},onRotate:function(Me){Z!==Me&&(C({rotate:Me}),A(Yo({rotate:Me},B5(_,M,Me))))}});function Qe(Me,bt,jt){ce!==Me&&(C({scale:Me}),A(Yo({scale:Me},F5(q,H,L,I,ce,Me,bt,jt),Me<=1&&{x:0,y:0})))}var we=E2(function(Me,bt,jt){if(jt===void 0&&(jt=0),(X||Q)&&k){var Ct=L$(Z,L,I),sn=Ct[0],We=Ct[1];if(jt===0&&j.current===0){var Le=Math.abs(Me-Ee)<=20,Ge=Math.abs(bt-Y)<=20;if(Le&&Ge)return void A({lastCX:Me,lastCY:bt});j.current=Le?bt>Y?3:2:1}var pt,ot=Me-ue,kt=bt-Ce;if(jt===0){var rt=am(ot+G,ce,sn,innerWidth)[0],qt=am(kt+te,ce,We,innerHeight);pt=function(un,Xe,mt,St){return Xe&&un===1||St==="x"?"x":mt&&un>1||St==="y"?"y":void 0}(j.current,rt,qt[0],De),pt!==void 0&&x(pt,Me,bt,ce)}if(pt==="x"||Q)return void A({reach:"x"});var cn=S2(ce+(jt-ae)/100/2*ce,_/L,.2);C({scale:cn}),A(Yo({touchLength:jt,reach:pt,scale:cn},F5(q,H,L,I,ce,cn,Me,bt,ot,kt)))}},{maxWait:8});function Ne(Me){return!ne&&!X&&(T.current&&A(Yo({},Me,{pause:u})),T.current)}var ie,fe,Se,ke,qe,it,de,ve,Te=(qe=function(Me){return Ne({x:Me})},it=function(Me){return Ne({y:Me})},de=function(Me){return T.current&&(C({scale:Me}),A({scale:Me})),!X&&T.current},ve=ty({X:function(Me){return qe(Me)},Y:function(Me){return it(Me)},S:function(Me){return de(Me)}}),function(Me,bt,jt,Ct,sn,We,Le,Ge,pt,ot,kt){var rt=L$(ot,sn,We),qt=rt[0],cn=rt[1],un=am(Me,Ge,qt,innerWidth),Xe=un[0],mt=un[1],St=am(bt,Ge,cn,innerHeight),on=St[0],zt=St[1],Be=Date.now()-kt;if(Be>=200||Ge!==Le||Math.abs(pt-Le)>1){var at=F5(Me,bt,sn,We,Le,Ge),On=at.x,Je=at.y,yt=Xe?mt:On!==Me?On:null,Bn=on?zt:Je!==bt?Je:null;return yt!==null&&Cb(Me,yt,ve.X),Bn!==null&&Cb(bt,Bn,ve.Y),void(Ge!==Le&&Cb(Le,Ge,ve.S))}var Vt=(Me-jt)/Be,Wn=(bt-Ct)/Be,_n=Math.sqrt(Math.pow(Vt,2)+Math.pow(Wn,2)),ei=!1,Sn=!1;(function(Vn,Cn){var Kn,vr=Vn,xr=0,er=0,He=function(Gn){Kn||(Kn=Gn);var Cr=Gn-Kn,ys=Math.sign(Vn),is=-.001*ys,Tr=Math.sign(-vr)*Math.pow(vr,2)*2e-4,Xn=vr*Cr+(is+Tr)*Math.pow(Cr,2)/2;xr+=Xn,Kn=Gn,ys*(vr+=(is+Tr)*Cr)<=0?tn():Cn(xr)?wt():tn()};function wt(){er=requestAnimationFrame(He)}function tn(){cancelAnimationFrame(er)}wt()})(_n,function(Vn){var Cn=Me+Vn*(Vt/_n),Kn=bt+Vn*(Wn/_n),vr=am(Cn,Le,qt,innerWidth),xr=vr[0],er=vr[1],He=am(Kn,Le,cn,innerHeight),wt=He[0],tn=He[1];if(xr&&!ei&&(ei=!0,Xe?Cb(Cn,er,ve.X):tY(er,Cn+(Cn-er),ve.X)),wt&&!Sn&&(Sn=!0,on?Cb(Kn,tn,ve.Y):tY(tn,Kn+(Kn-tn),ve.Y)),ei&&Sn)return!1;var Gn=ei||ve.X(er),Cr=Sn||ve.Y(tn);return Gn&&Cr})}),Ke=(ie=y,fe=function(Me,bt){De||Qe(ce!==1?1:Math.max(2,_/L),Me,bt)},Se=p.useRef(0),ke=E2(function(){Se.current=0,ie.apply(void 0,[].slice.call(arguments))},{wait:300}),function(){var Me=[].slice.call(arguments);Se.current+=1,ke.apply(void 0,Me),Se.current>=2&&(ke.cancel(),Se.current=0,fe.apply(void 0,Me))});function $e(Me,bt){if(j.current=0,(X||Q)&&k){A({touched:!1,maskTouched:!1,pause:!1,stopRaf:!1,reach:void 0});var jt=S2(ce,_/L);if(Te(q,H,G,te,L,I,ce,jt,se,Z,he),O(Me,bt),Ee===Me&&Y===bt){if(X)return void Ke(Me,bt);Q&&w(Me,bt)}}}function At(Me,bt,jt){jt===void 0&&(jt=0),A({touched:!0,CX:Me,CY:bt,lastCX:Me,lastCY:bt,lastX:q,lastY:H,lastScale:ce,touchLength:jt,touchTime:Date.now()})}function Nt(Me){A({maskTouched:!0,CX:Me.clientX,CY:Me.clientY,lastX:q,lastY:H})}ov(mh?void 0:"mousemove",function(Me){Me.preventDefault(),we(Me.clientX,Me.clientY)}),ov(mh?void 0:"mouseup",function(Me){$e(Me.clientX,Me.clientY)}),ov(mh?"touchmove":void 0,function(Me){Me.preventDefault();var bt=eY(Me);we.apply(void 0,bt)},{passive:!1}),ov(mh?"touchend":void 0,function(Me){var bt=Me.changedTouches[0];$e(bt.clientX,bt.clientY)},{passive:!1}),ov("resize",E2(function(){K&&!X&&(A(B5(_,M,Z)),S())},{maxWait:8})),M$(function(){k&&C(Yo({scale:ce,rotate:Z},ye))},[k]);var vt=function(Me,bt,jt,Ct,sn,We,Le,Ge,pt,ot){var kt=function(On,Je,yt,Bn,Vt){var Wn=p.useRef(!1),_n=xN({lead:!0,scale:yt}),ei=_n[0],Sn=ei.lead,Vn=ei.scale,Cn=_n[1],Kn=E2(function(vr){try{return Vt(!0),Cn({lead:!1,scale:vr}),Promise.resolve()}catch(xr){return Promise.reject(xr)}},{wait:Bn});return M$(function(){Wn.current?(Vt(!1),Cn({lead:!0}),Kn(yt)):Wn.current=!0},[yt]),Sn?[On*Vn,Je*Vn,yt/Vn]:[On*yt,Je*yt,1]}(We,Le,Ge,pt,ot),rt=kt[0],qt=kt[1],cn=kt[2],un=function(On,Je,yt,Bn,Vt){var Wn=p.useState(fYe),_n=Wn[0],ei=Wn[1],Sn=p.useState(0),Vn=Sn[0],Cn=Sn[1],Kn=p.useRef(),vr=ty({OK:function(){return On&&Cn(4)}});function xr(er){Vt(!1),Cn(er)}return p.useEffect(function(){if(Kn.current||(Kn.current=Date.now()),yt){if(function(er,He){var wt=er&&er.current;if(wt&&wt.nodeType===1){var tn=wt.getBoundingClientRect();He({T:tn.top,L:tn.left,W:tn.width,H:tn.height,FIT:wt.tagName==="IMG"?getComputedStyle(wt).objectFit:void 0})}}(Je,ei),On)return Date.now()-Kn.current<250?(Cn(1),requestAnimationFrame(function(){Cn(2),requestAnimationFrame(function(){return xr(3)})}),void setTimeout(vr.OK,Bn)):void Cn(4);xr(5)}},[On,yt]),[Vn,_n]}(Me,bt,jt,pt,ot),Xe=un[0],mt=un[1],St=mt.W,on=mt.FIT,zt=innerWidth/2,Be=innerHeight/2,at=Xe<3||Xe>4;return[at?St?mt.L:zt:Ct+(zt-We*Ge/2),at?St?mt.T:Be:sn+(Be-Le*Ge/2),rt,at&&on?rt*(mt.H/St):qt,Xe===0?cn:at?St/(We*Ge)||.01:cn,at?on?1:0:1,Xe,on]}(u,c,K,q,H,L,I,ce,d,function(Me){return A({pause:Me})}),Ot=vt[4],Tt=vt[6],ft="transform "+d+"ms "+f,gt={className:m,onMouseDown:mh?void 0:function(Me){Me.stopPropagation(),Me.button===0&&At(Me.clientX,Me.clientY,0)},onTouchStart:mh?function(Me){Me.stopPropagation(),At.apply(void 0,eY(Me))}:void 0,onWheel:function(Me){if(!De){var bt=S2(ce-Me.deltaY/100/2,_/L);A({stopRaf:!0}),Qe(bt,Me.clientX,Me.clientY)}},style:{width:vt[2]+"px",height:vt[3]+"px",opacity:vt[5],objectFit:Tt===4?void 0:vt[7],transform:Z?"rotate("+Z+"deg)":void 0,transition:Tt>2?ft+", opacity "+d+"ms ease, height "+(Tt<4?d/2:Tt>4?d:0)+"ms "+f:void 0}};return yi.createElement("div",{className:"PhotoView__PhotoWrap"+(h?" "+h:""),style:g,onMouseDown:!mh&&k?Nt:void 0,onTouchStart:mh&&k?function(Me){return Nt(Me.touches[0])}:void 0},yi.createElement("div",{className:"PhotoView__PhotoBox",style:{transform:"matrix("+Ot+", 0, 0, "+Ot+", "+vt[0]+", "+vt[1]+")",transition:X||Ae?void 0:ft,willChange:k?"transform":void 0}},n?yi.createElement(gYe,Yo({src:n,loaded:K,broken:F},gt,{onPhotoLoad:function(Me){A(Yo({},Me,Me.loaded&&B5(Me.naturalWidth||0,Me.naturalHeight||0,Z)))},loadingElement:b,brokenElement:v})):i&&i({attrs:gt,scale:Ot,rotate:Z})))}var nY={x:0,touched:!1,pause:!1,lastCX:void 0,lastCY:void 0,bg:void 0,lastBg:void 0,overlay:!0,minimal:!0,scale:1,rotate:0};function vYe(e){var t=e.loop,n=t===void 0?3:t,i=e.speed,r=e.easing,s=e.photoClosable,a=e.maskClosable,l=a===void 0||a,c=e.maskOpacity,u=c===void 0?1:c,d=e.pullClosable,f=d===void 0||d,h=e.bannerVisible,m=h===void 0||h,g=e.overlayRender,b=e.toolbarRender,v=e.className,y=e.maskClassName,w=e.photoClassName,x=e.photoWrapClassName,O=e.loadingElement,S=e.brokenElement,k=e.images,C=e.index,E=C===void 0?0:C,R=e.onIndexChange,A=e.visible,j=e.onClose,T=e.afterClose,N=e.portalContainer,_=xN(nY),D=_[0],M=_[1],P=p.useState(0),L=P[0],B=P[1],I=D.x,z=D.touched,K=D.pause,F=D.lastCX,q=D.lastCY,H=D.bg,X=H===void 0?u:H,ne=D.lastBg,Q=D.overlay,Z=D.minimal,ce=D.scale,Ee=D.rotate,Y=D.onScale,G=D.onRotate,te=e.hasOwnProperty("index"),ue=te?E:L,Ce=te?R:B,se=p.useRef(ue),he=k.length,ae=k[ue],Ae=typeof n=="boolean"?n:he>n,De=function(Ot,Tt){var ft=p.useReducer(function(jt){return!jt},!1)[1],gt=p.useRef(0),Me=function(jt){var Ct=p.useRef(jt);function sn(We){Ct.current=We}return p.useMemo(function(){(function(We){Ot?(We(Ot),gt.current=1):gt.current=2})(sn)},[jt]),[Ct.current,sn]}(Ot),bt=Me[1];return[Me[0],gt.current,function(){ft(),gt.current===2&&(bt(!1),Tt&&Tt()),gt.current=0}]}(A,T),ye=De[0],Qe=De[1],we=De[2];M$(function(){if(ye)return M({pause:!0,x:ue*-(innerWidth+P0)}),void(se.current=ue);M(nY)},[ye]);var Ne=ty({close:function(Ot){G&&G(0),M({overlay:!0,lastBg:X}),j(Ot)},changeIndex:function(Ot,Tt){Tt===void 0&&(Tt=!1);var ft=Ae?se.current+(Ot-ue):Ot,gt=he-1,Me=D$(ft,0,gt),bt=Ae?ft:Me,jt=innerWidth+P0;M({touched:!1,lastCX:void 0,lastCY:void 0,x:-jt*bt,pause:Tt}),se.current=bt,Ce&&Ce(Ae?Ot<0?gt:Ot>gt?0:Ot:Me)}}),ie=Ne.close,fe=Ne.changeIndex;function Se(Ot){return Ot?ie():M({overlay:!Q})}function ke(){M({x:-(innerWidth+P0)*ue,lastCX:void 0,lastCY:void 0,pause:!0}),se.current=ue}function qe(Ot,Tt,ft,gt){Ot==="x"?function(Me){if(F!==void 0){var bt=Me-F,jt=bt;!Ae&&(ue===0&&bt>0||ue===he-1&&bt<0)&&(jt=bt/2),M({touched:!0,lastCX:F,x:-(innerWidth+P0)*se.current+jt,pause:!1})}else M({touched:!0,lastCX:Me,x:I,pause:!1})}(Tt):Ot==="y"&&function(Me,bt){if(q!==void 0){var jt=u===null?null:D$(u,.01,u-Math.abs(Me-q)/100/4);M({touched:!0,lastCY:q,bg:bt===1?jt:u,minimal:bt===1})}else M({touched:!0,lastCY:Me,bg:X,minimal:!0})}(ft,gt)}function it(Ot,Tt){var ft=Ot-(F??Ot),gt=Tt-(q??Tt),Me=!1;if(ft<-40)fe(ue+1);else if(ft>40)fe(ue-1);else{var bt=-(innerWidth+P0)*se.current;Math.abs(gt)>100&&Z&&f&&(Me=!0,ie()),M({touched:!1,x:bt,lastCX:void 0,lastCY:void 0,bg:u,overlay:!!Me||Q})}}ov("keydown",function(Ot){if(A)switch(Ot.key){case"ArrowLeft":fe(ue-1,!0);break;case"ArrowRight":fe(ue+1,!0);break;case"Escape":ie()}});var de=function(Ot,Tt,ft){return p.useMemo(function(){var gt=Ot.length;return ft?Ot.concat(Ot).concat(Ot).slice(gt+Tt-1,gt+Tt+2):Ot.slice(Math.max(Tt-1,0),Math.min(Tt+2,gt+1))},[Ot,Tt,ft])}(k,ue,Ae);if(!ye)return null;var ve=Q&&!Qe,Te=A?X:ne,Ke=Y&&G&&{images:k,index:ue,visible:A,onClose:ie,onIndexChange:fe,overlayVisible:ve,overlay:ae&&ae.overlay,scale:ce,rotate:Ee,onScale:Y,onRotate:G},$e=i?i(Qe):400,At=r?r(Qe):JX,Nt=i?i(3):600,vt=r?r(3):JX;return yi.createElement(oYe,{className:"PhotoView-Portal"+(ve?"":" PhotoView-Slider__clean")+(A?"":" PhotoView-Slider__willClose")+(v?" "+v:""),role:"dialog",onClick:function(Ot){return Ot.stopPropagation()},container:N},A&&yi.createElement(uYe,null),yi.createElement("div",{className:"PhotoView-Slider__Backdrop"+(y?" "+y:"")+(Qe===1?" PhotoView-Slider__fadeIn":Qe===2?" PhotoView-Slider__fadeOut":""),style:{background:Te?"rgba(0, 0, 0, "+Te+")":void 0,transitionTimingFunction:At,transitionDuration:(z?0:$e)+"ms",animationDuration:$e+"ms"},onAnimationEnd:we}),m&&yi.createElement("div",{className:"PhotoView-Slider__BannerWrap"},yi.createElement("div",{className:"PhotoView-Slider__Counter"},ue+1," / ",he),yi.createElement("div",{className:"PhotoView-Slider__BannerRight"},b&&Ke&&b(Ke),yi.createElement(aYe,{className:"PhotoView-Slider__toolbarIcon",onClick:ie}))),de.map(function(Ot,Tt){var ft=Ae||ue!==0?se.current-1+Tt:ue+Tt;return yi.createElement(yYe,{key:Ae?Ot.key+"/"+Ot.src+"/"+ft:Ot.key,item:Ot,speed:$e,easing:At,visible:A,onReachMove:qe,onReachUp:it,onPhotoTap:function(){return Se(s)},onMaskTap:function(){return Se(l)},wrapClassName:x,className:w,style:{left:(innerWidth+P0)*ft+"px",transform:"translate3d("+I+"px, 0px, 0)",transition:z||K?void 0:"transform "+Nt+"ms "+vt},loadingElement:O,brokenElement:S,onPhotoResize:ke,isActive:se.current===ft,expose:M})}),!mh&&m&&yi.createElement(yi.Fragment,null,(Ae||ue!==0)&&yi.createElement("div",{className:"PhotoView-Slider__ArrowLeft",onClick:function(){return fe(ue-1,!0)}},yi.createElement(lYe,null)),(Ae||ue+1-1){var y=u.slice();return y.splice(v,1,b),void l({images:y})}l(function(w){return{images:w.images.concat(b)}})},remove:function(b){l(function(v){var y=v.images.filter(function(w){return w.key!==b});return{images:y,index:Math.min(y.length-1,f)}})},show:function(b){var v=u.findIndex(function(y){return y.key===b});l({visible:!0,index:v}),i&&i(!0,v,a)}}),m=ty({close:function(){l({visible:!1}),i&&i(!1,f,a)},changeIndex:function(b){l({index:b}),n&&n(b,a)}}),g=p.useMemo(function(){return Yo({},a,h)},[a,h]);return yi.createElement(xEe.Provider,{value:g},t,yi.createElement(vYe,Yo({images:u,visible:d,index:f,onIndexChange:m.changeIndex,onClose:m.close},r)))}var OEe=function(e){var t,n,i=e.src,r=e.render,s=e.overlay,a=e.width,l=e.height,c=e.triggers,u=c===void 0?["onClick"]:c,d=e.children,f=p.useContext(xEe),h=(t=function(){return f.nextId()},(n=p.useRef({sign:!1,fn:void 0}).current).sign||(n.sign=!0,n.fn=t()),n.fn),m=p.useRef(null);p.useImperativeHandle(d==null?void 0:d.ref,function(){return m.current}),p.useEffect(function(){return function(){f.remove(h)}},[]);var g=ty({render:function(v){return r&&r(v)},show:function(v,y){f.show(h),function(w,x){if(d){var O=d.props[w];O&&O(x)}}(v,y)}}),b=p.useMemo(function(){var v={};return u.forEach(function(y){v[y]=g.show.bind(null,y)}),v},[]);return p.useEffect(function(){f.update({key:h,src:i,originRef:m,render:g.render,overlay:s,width:a,height:l})},[i]),d?p.Children.only(p.cloneElement(d,Yo({},b,{ref:m}))):null};function my(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"4.5",width:"17",height:"15",rx:"2.5"}),o.jsx("path",{d:"m7.5 9 2.7 2.5L7.5 14M12.7 14h3.8"}),o.jsx("path",{d:"M3.8 7.5h16.4",opacity:".55"})]})}function kEe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"4.5",width:"17",height:"15",rx:"2.5"}),o.jsx("path",{d:"M3.8 8h16.4"}),o.jsx("circle",{cx:"6.5",cy:"6.3",r:".65",fill:"currentColor",stroke:"none"}),o.jsx("circle",{cx:"8.8",cy:"6.3",r:".65",fill:"currentColor",stroke:"none"}),o.jsx("path",{d:"m9 15 2.2-4 1.6 2.4 1.1-1.2L16 15H9Z"})]})}function vU(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M12 3.4 19 6v5.3c0 4.3-2.7 7.6-7 9.3-4.3-1.7-7-5-7-9.3V6l7-2.6Z"}),o.jsx("path",{d:"m8.8 12 2 2 4.4-4.4"})]})}function P_(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M3.5 7.7h6.1l1.7 2h9.2v7.5a2.3 2.3 0 0 1-2.3 2.3H5.8a2.3 2.3 0 0 1-2.3-2.3V7.7Z"}),o.jsx("path",{d:"M3.8 7.7V6.8a2.3 2.3 0 0 1 2.3-2.3h3l1.8 2h6.9a2.3 2.3 0 0 1 2.3 2.3v.9"}),o.jsx("path",{d:"M12 13v3M10.5 14.5h3"})]})}function kYe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"M12 5v14M5 12h14"})})}function iY(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m6.5 11.5 5.5-5.5 5.5 5.5M12 6v12"})})}function rY(e){return o.jsx("svg",{viewBox:"0 0 24 24","aria-hidden":"true",...e,children:o.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"1.75",fill:"currentColor"})})}function SYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"4.5",width:"17",height:"15",rx:"2.5"}),o.jsx("circle",{cx:"8.5",cy:"9",r:"1.4"}),o.jsx("path",{d:"m5.5 17 4.2-4.2 2.6 2.4 2.1-2.1 4.1 3.9"})]})}function EYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M6 3.5h7l5 5v12H6z"}),o.jsx("path",{d:"M13 3.5v5h5M9 13h6M9 16h5"})]})}function CYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"5",width:"13.5",height:"14",rx:"2.5"}),o.jsx("path",{d:"m17 10 3.5-2v8L17 14zM7 8.5h4.5"})]})}function TYe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m12 3 1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM18.5 15.5l.7 2.1 2.1.7-2.1.7-.7 2.1-.7-2.1-2.1-.7 2.1-.7z"})})}function SEe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m6.5 6.5 11 11M17.5 6.5l-11 11"})})}function $$(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m9 6 6 6-6 6"})})}function AYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M4.8 8.2A8 8 0 1 1 4 12M4.8 8.2V4.5M4.8 8.2h3.7"}),o.jsx("path",{d:"M12 8v4.5l3 1.8"})]})}function nc(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"M20 12a8 8 0 1 1-2.35-5.65"})})}function _Ye(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"8",y:"8",width:"11",height:"11",rx:"2"}),o.jsx("path",{d:"M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"})]})}function EEe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m5 12.5 4.2 4.2L19 7"})})}function V(e,t={}){return hn.t(e,{...t,ns:"adk"})}function Ll(e){const t=new Headers(e);return t.has("Accept-Language")||t.set("Accept-Language",hn.resolvedLanguage||hn.language),t}function F$(){return hn.resolvedLanguage||hn.language}const sY="veadk_auth_qs",jYe=new Set(["view","source","sessionId","artifactSha256","validationReportSha256","projectId","versionId"]);let iO=null;function NYe(){if(iO!==null)return iO;const e=new URLSearchParams(window.location.search),t=new URLSearchParams,n=new URLSearchParams,i=e.get("view")==="runtime-deploy"&&e.get("source")==="intelligent-development";e.forEach((s,a)=>{(i&&jYe.has(a)?n:t).append(a,s)});const r=t.toString();if(r?(sessionStorage.setItem(sY,r),iO=r):iO=sessionStorage.getItem(sY)??"",r){const s=n.toString();window.history.replaceState(null,"",window.location.pathname+(s?`?${s}`:"")+window.location.hash)}return iO}function ta(e){const t=NYe();if(!t)return e;const n=new URL(e,window.location.origin);return new URLSearchParams(t).forEach((i,r)=>{n.searchParams.has(r)||n.searchParams.set(r,i)}),/^https?:\/\//i.test(e)?n.toString():n.pathname+n.search+n.hash}const qa=3e4,hr=12e4,xU=1e4;function Wa(e,t=qa){if(t<=0)return e??void 0;const n=AbortSignal.timeout(t);return e?AbortSignal.any([e,n]):n}const wN="veadk_local_user",ON="veadk_local_user_tab",RYe="X-VeADK-OAuth-Refresh-Retry",IYe=[50,250],PYe=/^[A-Za-z0-9]{1,16}$/;function CEe(){try{const e=sessionStorage.getItem(ON);if(e)return e;const t=localStorage.getItem(wN);return t&&sessionStorage.setItem(ON,t),t}catch{try{return localStorage.getItem(wN)}catch{return null}}}function oY(e){try{sessionStorage.setItem(ON,e)}catch{}try{localStorage.setItem(wN,e)}catch{}}function DYe(){try{sessionStorage.removeItem(ON)}catch{}try{localStorage.removeItem(wN)}catch{}}function pu(e){const t=new Headers(e),n=CEe();return n&&t.set("X-VeADK-Local-User",n),t}async function TEe(){let e;try{e=await fetch("/web/auth-config",{headers:Ll({Accept:"application/json"}),signal:Wa(void 0,xU)})}catch(t){throw console.warn("[identity] /web/auth-config is unreachable:",t),new Error(V("identity.loadConfigNetworkFailed"))}if(!e.ok)throw new Error(V("identity.configServiceFailed",{status:e.status}));try{const t=await e.json();if(!Array.isArray(t.providers))throw new TypeError("providers is not an array");return t.providers}catch(t){throw console.warn("[identity] /web/auth-config returned an invalid response:",t),new Error(V("identity.invalidConfigResponse"))}}function MYe(e){const t=window.location.pathname+window.location.search+window.location.hash,n=e.includes("?")?"&":"?";window.location.assign(`${e}${n}redirect=${encodeURIComponent(t)}`)}function LYe(){const e=window.location.pathname+window.location.search+window.location.hash,t=window.open("about:blank","_blank","popup,width=520,height=720");if(!t)return null;try{t.opener=null,t.location.replace(`/oauth2/login?redirect=${encodeURIComponent(e)}`)}catch{return t.close(),null}return t}async function $Ye(){const[e,t]=await Promise.all([B$(),TEe()]);return e.status==="unauthenticated"&&t.length>0}function FYe(){window.location.assign("/oauth2/logout")}async function BYe(){for(let e=0;;e+=1){let t;try{t=await fetch("/oauth2/userinfo",{headers:Ll({Accept:"application/json"}),signal:Wa(void 0,xU)})}catch(i){throw console.warn("[identity] /oauth2/userinfo is unreachable:",i),new Error(V("identity.serviceNetworkFailed"))}const n=IYe[e];if(t.status!==401||t.headers.get(RYe)!=="1"||n===void 0)return t;await new Promise(i=>window.setTimeout(i,n))}}async function B$(){const e=await BYe();if(e.ok){let n;try{n=await e.json()}catch(r){throw console.warn("[identity] /oauth2/userinfo returned a non-JSON response:",r),new Error(V("identity.invalidServiceResponse"))}return{status:"authenticated",userId:String(n.sub??n.user_id??n.email??""),info:n}}if(e.status===401)return{status:"unauthenticated",userId:"",local:!1};if(e.status!==404)throw new Error(V("identity.serviceFailed",{status:e.status}));const t=CEe();return t?{status:"authenticated",userId:t,info:{name:t},local:!0}:{status:"unauthenticated",userId:"",local:!0}}function UYe(e){if(!e)return"";for(const t of[e.name,e.preferred_username,e.username,e.email])if(typeof t=="string"&&t.trim())return t.trim();return""}function QYe(e){const t=e==null?void 0:e.picture;return typeof t=="string"?t.trim():""}const U$="veadk:authentication-required";let Uk=null,JO=null;function zYe(e){if(!e.redirected||!e.url)return!1;try{const t=new URL(e.url);return t.pathname.includes("/authorize")||t.pathname.includes("/oauth2/login")||t.hostname.includes(".userpool.auth.")}catch{return!1}}function VYe(e){Uk||(Uk=new Promise(n=>{JO=n}),window.dispatchEvent(new Event(U$)));const t=Uk;return e?e.aborted?Promise.reject(e.reason??new Error("Request aborted")):new Promise((n,i)=>{const r=()=>i(e.reason??new Error("Request aborted"));e.addEventListener("abort",r,{once:!0}),t.then(()=>{e.removeEventListener("abort",r),n()},s=>{e.removeEventListener("abort",r),i(s)})}):t}function HYe(){return Uk!==null}function qYe(){JO==null||JO(),JO=null,Uk=null}async function QI(e,t){var i;const n=await e.text().catch(()=>"");try{return JSON.parse(n)}catch{const r=((i=e.headers.get("content-type"))==null?void 0:i.split(";",1)[0])||V("common.contentTypeMissing"),s=n.trim().slice(0,2e3),a=s?`
-${V("common.response",{response:s})}`:"";throw new Error(V("jsonResponse.nonJson",{fallback:t,status:e.status,contentType:r,detail:a}))}}const WYe=/\brun_sse\s*failed\s*:\s*404\b/i,KYe=/session not found/i,GYe=/(?:^|[::\s])not found\s*$/i,XYe=/Expecting (?:'[^']+'|\w+)(?: delimiter)?: line \d+ column \d+ \(char \d+\)/i,YYe=/Unknown or expired collection_id\s+'[^']+'\.\s*Call collect_resources first\./i,ZYe=/(?:RateLimitError|\bTPM\b|\bRPM\b|tokens? per minute|requests? per minute)[\s\S]*(?:\b429\b|limit|quota)|\b429\b[\s\S]*(?:model|RateLimitError|\bTPM\b|\bRPM\b)/i;function D0(e,t){return e.includes(t)?e:`${e}
+ `),()=>{document.head.removeChild(d)}},[t]),o.jsx(Iqe,{isPresent:t,childRef:i,sizeRef:r,children:p.cloneElement(e,{ref:i})})}const Dqe=({children:e,initial:t,isPresent:n,onExitComplete:i,custom:r,presenceAffectsLayout:s,mode:a})=>{const l=II(Mqe),c=p.useId(),u=p.useCallback(f=>{l.set(f,!0);for(const h of l.values())if(!h)return;i&&i()},[l,i]),d=p.useMemo(()=>({id:c,initial:t,isPresent:n,custom:r,onExitComplete:u,register:f=>(l.set(f,!1),()=>l.delete(f))}),s?[Math.random(),u]:[n,u]);return p.useMemo(()=>{l.forEach((f,h)=>l.set(h,!1))},[n]),p.useEffect(()=>{!n&&!l.size&&i&&i()},[n]),a==="popLayout"&&(e=o.jsx(Pqe,{isPresent:n,children:e})),o.jsx(PI.Provider,{value:d,children:e})};function Mqe(){return new Map}function zke(e=!0){const t=p.useContext(PI);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:i,register:r}=t,s=p.useId();p.useEffect(()=>{e&&r(s)},[e]);const a=p.useCallback(()=>e&&i&&i(s),[s,i,e]);return!n&&i?[!1,a]:[!0]}const x2=e=>e.key||"";function LG(e){const t=[];return p.Children.forEach(e,n=>{p.isValidElement(n)&&t.push(n)}),t}const B7=typeof window<"u",Vke=B7?p.useLayoutEffect:p.useEffect,Ad=({children:e,custom:t,initial:n=!0,onExitComplete:i,presenceAffectsLayout:r=!0,mode:s="sync",propagate:a=!1})=>{const[l,c]=zke(a),u=p.useMemo(()=>LG(e),[e]),d=a&&!l?[]:u.map(x2),f=p.useRef(!0),h=p.useRef(u),m=II(()=>new Map),[g,b]=p.useState(u),[v,y]=p.useState(u);Vke(()=>{f.current=!1,h.current=u;for(let O=0;O{const S=x2(O),k=a&&!l?!1:u===v||d.includes(S),C=()=>{if(m.has(S))m.set(S,!0);else return;let E=!0;m.forEach(R=>{R||(E=!1)}),E&&(x==null||x(),y(h.current),a&&(c==null||c()),i&&i())};return o.jsx(Dqe,{isPresent:k,initial:!f.current||n?void 0:!1,custom:k?void 0:t,presenceAffectsLayout:r,mode:s,onExitComplete:k?void 0:C,children:O},S)})})},nu=e=>e;let Hke=nu;const Lqe={useManualTiming:!1};function $qe(e){let t=new Set,n=new Set,i=!1,r=!1;const s=new WeakSet;let a={delta:0,timestamp:0,isProcessing:!1};function l(u){s.has(u)&&(c.schedule(u),e()),u(a)}const c={schedule:(u,d=!1,f=!1)=>{const m=f&&i?t:n;return d&&s.add(u),m.has(u)||m.add(u),u},cancel:u=>{n.delete(u),s.delete(u)},process:u=>{if(a=u,i){r=!0;return}i=!0,[t,n]=[n,t],t.forEach(l),t.clear(),i=!1,r&&(r=!1,c.process(u))}};return c}const w2=["read","resolveKeyframes","update","preRender","render","postRender"],Fqe=40;function qke(e,t){let n=!1,i=!0;const r={delta:0,timestamp:0,isProcessing:!1},s=()=>n=!0,a=w2.reduce((y,w)=>(y[w]=$qe(s),y),{}),{read:l,resolveKeyframes:c,update:u,preRender:d,render:f,postRender:h}=a,m=()=>{const y=performance.now();n=!1,r.delta=i?1e3/60:Math.max(Math.min(y-r.timestamp,Fqe),1),r.timestamp=y,r.isProcessing=!0,l.process(r),c.process(r),u.process(r),d.process(r),f.process(r),h.process(r),r.isProcessing=!1,n&&t&&(i=!1,e(m))},g=()=>{n=!0,i=!0,r.isProcessing||e(m)};return{schedule:w2.reduce((y,w)=>{const x=a[w];return y[w]=(O,S=!1,k=!1)=>(n||g(),x.schedule(O,S,k)),y},{}),cancel:y=>{for(let w=0;w$G[e].some(n=>!!t[n])};function Bqe(e){for(const t in e)Hx[t]={...Hx[t],...e[t]}}const Uqe=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function fN(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||Uqe.has(e)}let Kke=e=>!fN(e);function Gke(e){e&&(Kke=t=>t.startsWith("on")?!fN(t):e(t))}try{Gke(require("@emotion/is-prop-valid").default)}catch{}function Qqe(e,t,n){const i={};for(const r in e)r==="values"&&typeof e.values=="object"||(Kke(r)||n===!0&&fN(r)||!t&&!fN(r)||e.draggable&&r.startsWith("onDrag"))&&(i[r]=e[r]);return i}function zqe({children:e,isValidProp:t,...n}){t&&Gke(t),n={...p.useContext($S),...n},n.isStatic=II(()=>n.isStatic);const i=p.useMemo(()=>n,[JSON.stringify(n.transition),n.transformPagePoint,n.reducedMotion]);return o.jsx($S.Provider,{value:i,children:e})}function Vqe(e){if(typeof Proxy>"u")return e;const t=new Map,n=(...i)=>e(...i);return new Proxy(n,{get:(i,r)=>r==="create"?e:(t.has(r)||t.set(r,e(r)),t.get(r))})}const DI=p.createContext({});function FS(e){return typeof e=="string"||Array.isArray(e)}function MI(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}const U7=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],Q7=["initial",...U7];function LI(e){return MI(e.animate)||Q7.some(t=>FS(e[t]))}function Xke(e){return!!(LI(e)||e.variants)}function Hqe(e,t){if(LI(e)){const{initial:n,animate:i}=e;return{initial:n===!1||FS(n)?n:void 0,animate:FS(i)?i:void 0}}return e.inherit!==!1?t:{}}function qqe(e){const{initial:t,animate:n}=Hqe(e,p.useContext(DI));return p.useMemo(()=>({initial:t,animate:n}),[FG(t),FG(n)])}function FG(e){return Array.isArray(e)?e.join(" "):e}const Wqe=Symbol.for("motionComponentSymbol");function Rv(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function Kqe(e,t,n){return p.useCallback(i=>{i&&e.onMount&&e.onMount(i),t&&(i?t.mount(i):t.unmount()),n&&(typeof n=="function"?n(i):Rv(n)&&(n.current=i))},[t])}const z7=e=>e.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),Gqe="framerAppearId",Yke="data-"+z7(Gqe),{schedule:V7}=qke(queueMicrotask,!1),Zke=p.createContext({});function Xqe(e,t,n,i,r){var s,a;const{visualElement:l}=p.useContext(DI),c=p.useContext(Wke),u=p.useContext(PI),d=p.useContext($S).reducedMotion,f=p.useRef(null);i=i||c.renderer,!f.current&&i&&(f.current=i(e,{visualState:t,parent:l,props:n,presenceContext:u,blockInitialAnimation:u?u.initial===!1:!1,reducedMotionConfig:d}));const h=f.current,m=p.useContext(Zke);h&&!h.projection&&r&&(h.type==="html"||h.type==="svg")&&Yqe(f.current,n,r,m);const g=p.useRef(!1);p.useInsertionEffect(()=>{h&&g.current&&h.update(n,u)});const b=n[Yke],v=p.useRef(!!b&&!(!((s=window.MotionHandoffIsComplete)===null||s===void 0)&&s.call(window,b))&&((a=window.MotionHasOptimisedAnimation)===null||a===void 0?void 0:a.call(window,b)));return Vke(()=>{h&&(g.current=!0,window.MotionIsMounted=!0,h.updateFeatures(),V7.render(h.render),v.current&&h.animationState&&h.animationState.animateChanges())}),p.useEffect(()=>{h&&(!v.current&&h.animationState&&h.animationState.animateChanges(),v.current&&(queueMicrotask(()=>{var y;(y=window.MotionHandoffMarkAsComplete)===null||y===void 0||y.call(window,b)}),v.current=!1))}),h}function Yqe(e,t,n,i){const{layoutId:r,layout:s,drag:a,dragConstraints:l,layoutScroll:c,layoutRoot:u}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:Jke(e.parent)),e.projection.setOptions({layoutId:r,layout:s,alwaysMeasureLayout:!!a||l&&Rv(l),visualElement:e,animationType:typeof s=="string"?s:"both",initialPromotionConfig:i,layoutScroll:c,layoutRoot:u})}function Jke(e){if(e)return e.options.allowProjection!==!1?e.projection:Jke(e.parent)}function Zqe({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:i,Component:r}){var s,a;e&&Bqe(e);function l(u,d){let f;const h={...p.useContext($S),...u,layoutId:Jqe(u)},{isStatic:m}=h,g=qqe(u),b=i(u,m);if(!m&&B7){eWe();const v=tWe(h);f=v.MeasureLayout,g.visualElement=Xqe(r,b,h,t,v.ProjectionNode)}return o.jsxs(DI.Provider,{value:g,children:[f&&g.visualElement?o.jsx(f,{visualElement:g.visualElement,...h}):null,n(r,u,Kqe(b,g.visualElement,d),b,m,g.visualElement)]})}l.displayName=`motion.${typeof r=="string"?r:`create(${(a=(s=r.displayName)!==null&&s!==void 0?s:r.name)!==null&&a!==void 0?a:""})`}`;const c=p.forwardRef(l);return c[Wqe]=r,c}function Jqe({layoutId:e}){const t=p.useContext(F7).id;return t&&e!==void 0?t+"-"+e:e}function eWe(e,t){p.useContext(Wke).strict}function tWe(e){const{drag:t,layout:n}=Hx;if(!t&&!n)return{};const i={...t,...n};return{MeasureLayout:t!=null&&t.isEnabled(e)||n!=null&&n.isEnabled(e)?i.MeasureLayout:void 0,ProjectionNode:i.ProjectionNode}}const nWe=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function H7(e){return typeof e!="string"||e.includes("-")?!1:!!(nWe.indexOf(e)>-1||/[A-Z]/u.test(e))}function BG(e){const t=[{},{}];return e==null||e.values.forEach((n,i)=>{t[0][i]=n.get(),t[1][i]=n.getVelocity()}),t}function q7(e,t,n,i){if(typeof t=="function"){const[r,s]=BG(i);t=t(n!==void 0?n:e.custom,r,s)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[r,s]=BG(i);t=t(n!==void 0?n:e.custom,r,s)}return t}const x$=e=>Array.isArray(e),iWe=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),rWe=e=>x$(e)?e[e.length-1]||0:e,ll=e=>!!(e&&e.getVelocity);function N_(e){const t=ll(e)?e.get():e;return iWe(t)?t.toValue():t}function sWe({scrapeMotionValuesFromProps:e,createRenderState:t,onUpdate:n},i,r,s){const a={latestValues:oWe(i,r,s,e),renderState:t()};return n&&(a.onMount=l=>n({props:i,current:l,...a}),a.onUpdate=l=>n(l)),a}const eSe=e=>(t,n)=>{const i=p.useContext(DI),r=p.useContext(PI),s=()=>sWe(e,t,i,r);return n?s():II(s)};function oWe(e,t,n,i){const r={},s=i(e,{});for(const h in s)r[h]=N_(s[h]);let{initial:a,animate:l}=e;const c=LI(e),u=Xke(e);t&&u&&!c&&e.inherit!==!1&&(a===void 0&&(a=t.initial),l===void 0&&(l=t.animate));let d=n?n.initial===!1:!1;d=d||a===!1;const f=d?l:a;if(f&&typeof f!="boolean"&&!MI(f)){const h=Array.isArray(f)?f:[f];for(let m=0;mt=>typeof t=="string"&&t.startsWith(e),nSe=tSe("--"),aWe=tSe("var(--"),W7=e=>aWe(e)?lWe.test(e.split("/*")[0].trim()):!1,lWe=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,iSe=(e,t)=>t&&typeof e=="number"?t.transform(e):e,ap=(e,t,n)=>n>t?t:ntypeof e=="number",parse:parseFloat,transform:e=>e},BS={...Fw,transform:e=>ap(0,1,e)},O2={...Fw,default:1},vC=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),tm=vC("deg"),Nf=vC("%"),Mn=vC("px"),cWe=vC("vh"),uWe=vC("vw"),UG={...Nf,parse:e=>Nf.parse(e)/100,transform:e=>Nf.transform(e*100)},dWe={borderWidth:Mn,borderTopWidth:Mn,borderRightWidth:Mn,borderBottomWidth:Mn,borderLeftWidth:Mn,borderRadius:Mn,radius:Mn,borderTopLeftRadius:Mn,borderTopRightRadius:Mn,borderBottomRightRadius:Mn,borderBottomLeftRadius:Mn,width:Mn,maxWidth:Mn,height:Mn,maxHeight:Mn,top:Mn,right:Mn,bottom:Mn,left:Mn,padding:Mn,paddingTop:Mn,paddingRight:Mn,paddingBottom:Mn,paddingLeft:Mn,margin:Mn,marginTop:Mn,marginRight:Mn,marginBottom:Mn,marginLeft:Mn,backgroundPositionX:Mn,backgroundPositionY:Mn},fWe={rotate:tm,rotateX:tm,rotateY:tm,rotateZ:tm,scale:O2,scaleX:O2,scaleY:O2,scaleZ:O2,skew:tm,skewX:tm,skewY:tm,distance:Mn,translateX:Mn,translateY:Mn,translateZ:Mn,x:Mn,y:Mn,z:Mn,perspective:Mn,transformPerspective:Mn,opacity:BS,originX:UG,originY:UG,originZ:Mn},QG={...Fw,transform:Math.round},K7={...dWe,...fWe,zIndex:QG,size:Mn,fillOpacity:BS,strokeOpacity:BS,numOctaves:QG},hWe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},pWe=$w.length;function mWe(e,t,n){let i="",r=!0;for(let s=0;s({style:{},transform:{},transformOrigin:{},vars:{}}),rSe=()=>({...Y7(),attrs:{}}),Z7=e=>typeof e=="string"&&e.toLowerCase()==="svg";function sSe(e,{style:t,vars:n},i,r){Object.assign(e.style,t,r&&r.getProjectionStyles(i));for(const s in n)e.style.setProperty(s,n[s])}const oSe=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function aSe(e,t,n,i){sSe(e,t,void 0,i);for(const r in t.attrs)e.setAttribute(oSe.has(r)?r:z7(r),t.attrs[r])}const hN={};function xWe(e){Object.assign(hN,e)}function lSe(e,{layout:t,layoutId:n}){return Hy.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!hN[e]||e==="opacity")}function J7(e,t,n){var i;const{style:r}=e,s={};for(const a in r)(ll(r[a])||t.style&&ll(t.style[a])||lSe(a,e)||((i=n==null?void 0:n.getValue(a))===null||i===void 0?void 0:i.liveStyle)!==void 0)&&(s[a]=r[a]);return s}function cSe(e,t,n){const i=J7(e,t,n);for(const r in e)if(ll(e[r])||ll(t[r])){const s=$w.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;i[s]=e[r]}return i}function wWe(e,t){try{t.dimensions=typeof e.getBBox=="function"?e.getBBox():e.getBoundingClientRect()}catch{t.dimensions={x:0,y:0,width:0,height:0}}}const VG=["x","y","width","height","cx","cy","r"],OWe={useVisualState:eSe({scrapeMotionValuesFromProps:cSe,createRenderState:rSe,onUpdate:({props:e,prevProps:t,current:n,renderState:i,latestValues:r})=>{if(!n)return;let s=!!e.drag;if(!s){for(const l in r)if(Hy.has(l)){s=!0;break}}if(!s)return;let a=!t;if(t)for(let l=0;l{wWe(n,i),gs.render(()=>{X7(i,r,Z7(n.tagName),e.transformTemplate),aSe(n,i)})})}})},kWe={useVisualState:eSe({scrapeMotionValuesFromProps:J7,createRenderState:Y7})};function uSe(e,t,n){for(const i in t)!ll(t[i])&&!lSe(i,n)&&(e[i]=t[i])}function SWe({transformTemplate:e},t){return p.useMemo(()=>{const n=Y7();return G7(n,t,e),Object.assign({},n.vars,n.style)},[t])}function EWe(e,t){const n=e.style||{},i={};return uSe(i,n,e),Object.assign(i,SWe(e,t)),i}function CWe(e,t){const n={},i=EWe(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=i,n}function TWe(e,t,n,i){const r=p.useMemo(()=>{const s=rSe();return X7(s,t,Z7(i),e.transformTemplate),{...s.attrs,style:{...s.style}}},[t]);if(e.style){const s={};uSe(s,e.style,e),r.style={...s,...r.style}}return r}function AWe(e=!1){return(n,i,r,{latestValues:s},a)=>{const c=(H7(n)?TWe:CWe)(i,s,a,n),u=Qqe(i,typeof n=="string",e),d=n!==p.Fragment?{...u,...c,ref:r}:{},{children:f}=i,h=p.useMemo(()=>ll(f)?f.get():f,[f]);return p.createElement(n,{...d,children:h})}}function _We(e,t){return function(i,{forwardMotionProps:r}={forwardMotionProps:!1}){const a={...H7(i)?OWe:kWe,preloadedFeatures:e,useRender:AWe(r),createVisualElement:t,Component:i};return Zqe(a)}}function dSe(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let i=0;i(R_===void 0&&Rf.set(Ra.isProcessing||Lqe.useManualTiming?Ra.timestamp:performance.now()),R_),set:e=>{R_=e,queueMicrotask(jWe)}};function tU(e,t){e.indexOf(t)===-1&&e.push(t)}function nU(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class iU{constructor(){this.subscriptions=[]}add(t){return tU(this.subscriptions,t),()=>nU(this.subscriptions,t)}notify(t,n,i){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](t,n,i);else for(let s=0;s!isNaN(parseFloat(e));class RWe{constructor(t,n={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(i,r=!0)=>{const s=Rf.now();this.updatedAt!==s&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(i),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),r&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=Rf.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=NWe(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new iU);const i=this.events[t].add(n);return t==="change"?()=>{i(),gs.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}setWithVelocity(t,n,i){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-i}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const t=Rf.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>HG)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,HG);return hSe(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function US(e,t){return new RWe(e,t)}function IWe(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,US(n))}function PWe(e,t){const n=$I(e,t);let{transitionEnd:i={},transition:r={},...s}=n||{};s={...s,...i};for(const a in s){const l=rWe(s[a]);IWe(e,a,l)}}function DWe(e){return!!(ll(e)&&e.add)}function w$(e,t){const n=e.getValue("willChange");if(DWe(n))return n.add(t)}function pSe(e){return e.props[Yke]}function rU(e){let t;return()=>(t===void 0&&(t=e()),t)}const MWe=rU(()=>window.ScrollTimeline!==void 0);class LWe{constructor(t){this.stop=()=>this.runAll("stop"),this.animations=t.filter(Boolean)}get finished(){return Promise.all(this.animations.map(t=>"finished"in t?t.finished:t))}getAll(t){return this.animations[0][t]}setAll(t,n){for(let i=0;i{if(MWe()&&r.attachTimeline)return r.attachTimeline(t);if(typeof n=="function")return n(r)});return()=>{i.forEach((r,s)=>{r&&r(),this.animations[s].stop()})}}get time(){return this.getAll("time")}set time(t){this.setAll("time",t)}get speed(){return this.getAll("speed")}set speed(t){this.setAll("speed",t)}get startTime(){return this.getAll("startTime")}get duration(){let t=0;for(let n=0;nn[t]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class $We extends LWe{then(t,n){return Promise.all(this.animations).then(t).catch(n)}}const Vh=e=>e*1e3,Hh=e=>e/1e3;function sU(e){return typeof e=="function"}function qG(e,t){e.timeline=t,e.onfinish=null}const oU=e=>Array.isArray(e)&&typeof e[0]=="number",FWe={linearEasing:void 0};function BWe(e,t){const n=rU(e);return()=>{var i;return(i=FWe[t])!==null&&i!==void 0?i:n()}}const pN=BWe(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),qx=(e,t,n)=>{const i=t-e;return i===0?1:(n-e)/i},mSe=(e,t,n=10)=>{let i="";const r=Math.max(Math.round(t/n),2);for(let s=0;s`cubic-bezier(${e}, ${t}, ${n}, ${i})`,O$={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:XO([0,.65,.55,1]),circOut:XO([.55,0,1,.45]),backIn:XO([.31,.01,.66,-.59]),backOut:XO([.33,1.53,.69,.99])};function bSe(e,t){if(e)return typeof e=="function"&&pN()?mSe(e,t):oU(e)?XO(e):Array.isArray(e)?e.map(n=>bSe(n,t)||O$.easeOut):O$[e]}const ySe=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,UWe=1e-7,QWe=12;function zWe(e,t,n,i,r){let s,a,l=0;do a=t+(n-t)/2,s=ySe(a,i,r)-e,s>0?n=a:t=a;while(Math.abs(s)>UWe&&++lzWe(s,0,1,e,n);return s=>s===0||s===1?s:ySe(r(s),t,i)}const vSe=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,xSe=e=>t=>1-e(1-t),wSe=xC(.33,1.53,.69,.99),aU=xSe(wSe),OSe=vSe(aU),kSe=e=>(e*=2)<1?.5*aU(e):.5*(2-Math.pow(2,-10*(e-1))),lU=e=>1-Math.sin(Math.acos(e)),SSe=xSe(lU),ESe=vSe(lU),CSe=e=>/^0[^.\s]+$/u.test(e);function VWe(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||CSe(e):!0}const Lk=e=>Math.round(e*1e5)/1e5,cU=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function HWe(e){return e==null}const qWe=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,uU=(e,t)=>n=>!!(typeof n=="string"&&qWe.test(n)&&n.startsWith(e)||t&&!HWe(n)&&Object.prototype.hasOwnProperty.call(n,t)),TSe=(e,t,n)=>i=>{if(typeof i!="string")return i;const[r,s,a,l]=i.match(cU);return{[e]:parseFloat(r),[t]:parseFloat(s),[n]:parseFloat(a),alpha:l!==void 0?parseFloat(l):1}},WWe=e=>ap(0,255,e),T5={...Fw,transform:e=>Math.round(WWe(e))},Pb={test:uU("rgb","red"),parse:TSe("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:i=1})=>"rgba("+T5.transform(e)+", "+T5.transform(t)+", "+T5.transform(n)+", "+Lk(BS.transform(i))+")"};function KWe(e){let t="",n="",i="",r="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),i=e.substring(5,7),r=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),i=e.substring(3,4),r=e.substring(4,5),t+=t,n+=n,i+=i,r+=r),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(i,16),alpha:r?parseInt(r,16)/255:1}}const k$={test:uU("#"),parse:KWe,transform:Pb.transform},Iv={test:uU("hsl","hue"),parse:TSe("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:i=1})=>"hsla("+Math.round(e)+", "+Nf.transform(Lk(t))+", "+Nf.transform(Lk(n))+", "+Lk(BS.transform(i))+")"},sl={test:e=>Pb.test(e)||k$.test(e)||Iv.test(e),parse:e=>Pb.test(e)?Pb.parse(e):Iv.test(e)?Iv.parse(e):k$.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Pb.transform(e):Iv.transform(e)},GWe=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function XWe(e){var t,n;return isNaN(e)&&typeof e=="string"&&(((t=e.match(cU))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(GWe))===null||n===void 0?void 0:n.length)||0)>0}const ASe="number",_Se="color",YWe="var",ZWe="var(",WG="${}",JWe=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function QS(e){const t=e.toString(),n=[],i={color:[],number:[],var:[]},r=[];let s=0;const l=t.replace(JWe,c=>(sl.test(c)?(i.color.push(s),r.push(_Se),n.push(sl.parse(c))):c.startsWith(ZWe)?(i.var.push(s),r.push(YWe),n.push(c)):(i.number.push(s),r.push(ASe),n.push(parseFloat(c))),++s,WG)).split(WG);return{values:n,split:l,indexes:i,types:r}}function jSe(e){return QS(e).values}function NSe(e){const{split:t,types:n}=QS(e),i=t.length;return r=>{let s="";for(let a=0;atypeof e=="number"?0:e;function tKe(e){const t=jSe(e);return NSe(e)(t.map(eKe))}const ig={test:XWe,parse:jSe,createTransformer:NSe,getAnimatableNone:tKe},nKe=new Set(["brightness","contrast","saturate","opacity"]);function iKe(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[i]=n.match(cU)||[];if(!i)return e;const r=n.replace(i,"");let s=nKe.has(t)?1:0;return i!==n&&(s*=100),t+"("+s+r+")"}const rKe=/\b([a-z-]*)\(.*?\)/gu,S$={...ig,getAnimatableNone:e=>{const t=e.match(rKe);return t?t.map(iKe).join(" "):e}},sKe={...K7,color:sl,backgroundColor:sl,outlineColor:sl,fill:sl,stroke:sl,borderColor:sl,borderTopColor:sl,borderRightColor:sl,borderBottomColor:sl,borderLeftColor:sl,filter:S$,WebkitFilter:S$},dU=e=>sKe[e];function RSe(e,t){let n=dU(e);return n!==S$&&(n=ig),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const oKe=new Set(["auto","none","0"]);function aKe(e,t,n){let i=0,r;for(;ie===Fw||e===Mn,GG=(e,t)=>parseFloat(e.split(", ")[t]),XG=(e,t)=>(n,{transform:i})=>{if(i==="none"||!i)return 0;const r=i.match(/^matrix3d\((.+)\)$/u);if(r)return GG(r[1],t);{const s=i.match(/^matrix\((.+)\)$/u);return s?GG(s[1],e):0}},lKe=new Set(["x","y","z"]),cKe=$w.filter(e=>!lKe.has(e));function uKe(e){const t=[];return cKe.forEach(n=>{const i=e.getValue(n);i!==void 0&&(t.push([n,i.get()]),i.set(n.startsWith("scale")?1:0))}),t}const Wx={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:XG(4,13),y:XG(5,14)};Wx.translateX=Wx.x;Wx.translateY=Wx.y;const ey=new Set;let E$=!1,C$=!1;function ISe(){if(C$){const e=Array.from(ey).filter(i=>i.needsMeasurement),t=new Set(e.map(i=>i.element)),n=new Map;t.forEach(i=>{const r=uKe(i);r.length&&(n.set(i,r),i.render())}),e.forEach(i=>i.measureInitialState()),t.forEach(i=>{i.render();const r=n.get(i);r&&r.forEach(([s,a])=>{var l;(l=i.getValue(s))===null||l===void 0||l.set(a)})}),e.forEach(i=>i.measureEndState()),e.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}C$=!1,E$=!1,ey.forEach(e=>e.complete()),ey.clear()}function PSe(){ey.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(C$=!0)})}function dKe(){PSe(),ISe()}class fU{constructor(t,n,i,r,s,a=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=i,this.motionValue=r,this.element=s,this.isAsync=a}scheduleResolve(){this.isScheduled=!0,this.isAsync?(ey.add(this),E$||(E$=!0,gs.read(PSe),gs.resolveKeyframes(ISe))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:i,motionValue:r}=this;for(let s=0;s/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e),fKe=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function hKe(e){const t=fKe.exec(e);if(!t)return[,];const[,n,i,r]=t;return[`--${n??i}`,r]}function MSe(e,t,n=1){const[i,r]=hKe(e);if(!i)return;const s=window.getComputedStyle(t).getPropertyValue(i);if(s){const a=s.trim();return DSe(a)?parseFloat(a):a}return W7(r)?MSe(r,t,n+1):r}const LSe=e=>t=>t.test(e),pKe={test:e=>e==="auto",parse:e=>e},$Se=[Fw,Mn,Nf,tm,uWe,cWe,pKe],YG=e=>$Se.find(LSe(e));class FSe extends fU{constructor(t,n,i,r,s){super(t,n,i,r,s,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:n,name:i}=this;if(!n||!n.current)return;super.readKeyframes();for(let c=0;c{n.getValue(c).set(u)}),this.resolveNoneKeyframes()}}const ZG=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(ig.test(e)||e==="0")&&!e.startsWith("url("));function mKe(e){const t=e[0];if(e.length===1)return!0;for(let n=0;ne!==null;function FI(e,{repeat:t,repeatType:n="loop"},i){const r=e.filter(bKe),s=t&&n!=="loop"&&t%2===1?0:r.length-1;return!s||i===void 0?r[s]:i}const yKe=40;class BSe{constructor({autoplay:t=!0,delay:n=0,type:i="keyframes",repeat:r=0,repeatDelay:s=0,repeatType:a="loop",...l}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=Rf.now(),this.options={autoplay:t,delay:n,type:i,repeat:r,repeatDelay:s,repeatType:a,...l},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>yKe?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&dKe(),this._resolved}onKeyframesResolved(t,n){this.resolvedAt=Rf.now(),this.hasAttemptedResolve=!0;const{name:i,type:r,velocity:s,delay:a,onComplete:l,onUpdate:c,isGenerator:u}=this.options;if(!u&&!gKe(t,i,r,s))if(a)this.options.duration=0;else{c&&c(FI(t,this.options,n)),l&&l(),this.resolveFinishedPromise();return}const d=this.initPlayback(t,n);d!==!1&&(this._resolved={keyframes:t,finalKeyframe:n,...d},this.onPostResolved())}onPostResolved(){}then(t,n){return this.currentFinishedPromise.then(t,n)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(t=>{this.resolveFinishedPromise=t})}}const T$=2e4;function USe(e){let t=0;const n=50;let i=e.next(t);for(;!i.done&&t=T$?1/0:t}const zs=(e,t,n)=>e+(t-e)*n;function A5(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function vKe({hue:e,saturation:t,lightness:n,alpha:i}){e/=360,t/=100,n/=100;let r=0,s=0,a=0;if(!t)r=s=a=n;else{const l=n<.5?n*(1+t):n+t-n*t,c=2*n-l;r=A5(c,l,e+1/3),s=A5(c,l,e),a=A5(c,l,e-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(a*255),alpha:i}}function mN(e,t){return n=>n>0?t:e}const _5=(e,t,n)=>{const i=e*e,r=n*(t*t-i)+i;return r<0?0:Math.sqrt(r)},xKe=[k$,Pb,Iv],wKe=e=>xKe.find(t=>t.test(e));function JG(e){const t=wKe(e);if(!t)return!1;let n=t.parse(e);return t===Iv&&(n=vKe(n)),n}const eX=(e,t)=>{const n=JG(e),i=JG(t);if(!n||!i)return mN(e,t);const r={...n};return s=>(r.red=_5(n.red,i.red,s),r.green=_5(n.green,i.green,s),r.blue=_5(n.blue,i.blue,s),r.alpha=zs(n.alpha,i.alpha,s),Pb.transform(r))},OKe=(e,t)=>n=>t(e(n)),wC=(...e)=>e.reduce(OKe),A$=new Set(["none","hidden"]);function kKe(e,t){return A$.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function SKe(e,t){return n=>zs(e,t,n)}function hU(e){return typeof e=="number"?SKe:typeof e=="string"?W7(e)?mN:sl.test(e)?eX:TKe:Array.isArray(e)?QSe:typeof e=="object"?sl.test(e)?eX:EKe:mN}function QSe(e,t){const n=[...e],i=n.length,r=e.map((s,a)=>hU(s)(s,t[a]));return s=>{for(let a=0;a{for(const s in i)n[s]=i[s](r);return n}}function CKe(e,t){var n;const i=[],r={color:0,var:0,number:0};for(let s=0;s{const n=ig.createTransformer(t),i=QS(e),r=QS(t);return i.indexes.var.length===r.indexes.var.length&&i.indexes.color.length===r.indexes.color.length&&i.indexes.number.length>=r.indexes.number.length?A$.has(e)&&!r.values.length||A$.has(t)&&!i.values.length?kKe(e,t):wC(QSe(CKe(i,r),r.values),n):mN(e,t)};function zSe(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?zs(e,t,n):hU(e)(e,t)}const AKe=5;function VSe(e,t,n){const i=Math.max(t-AKe,0);return hSe(n-e(i),t-i)}const Gs={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},j5=.001;function _Ke({duration:e=Gs.duration,bounce:t=Gs.bounce,velocity:n=Gs.velocity,mass:i=Gs.mass}){let r,s,a=1-t;a=ap(Gs.minDamping,Gs.maxDamping,a),e=ap(Gs.minDuration,Gs.maxDuration,Hh(e)),a<1?(r=u=>{const d=u*a,f=d*e,h=d-n,m=_$(u,a),g=Math.exp(-f);return j5-h/m*g},s=u=>{const f=u*a*e,h=f*n+n,m=Math.pow(a,2)*Math.pow(u,2)*e,g=Math.exp(-f),b=_$(Math.pow(u,2),a);return(-r(u)+j5>0?-1:1)*((h-m)*g)/b}):(r=u=>{const d=Math.exp(-u*e),f=(u-n)*e+1;return-j5+d*f},s=u=>{const d=Math.exp(-u*e),f=(n-u)*(e*e);return d*f});const l=5/e,c=NKe(r,s,l);if(e=Vh(e),isNaN(c))return{stiffness:Gs.stiffness,damping:Gs.damping,duration:e};{const u=Math.pow(c,2)*i;return{stiffness:u,damping:a*2*Math.sqrt(i*u),duration:e}}}const jKe=12;function NKe(e,t,n){let i=n;for(let r=1;re[n]!==void 0)}function PKe(e){let t={velocity:Gs.velocity,stiffness:Gs.stiffness,damping:Gs.damping,mass:Gs.mass,isResolvedFromDuration:!1,...e};if(!tX(e,IKe)&&tX(e,RKe))if(e.visualDuration){const n=e.visualDuration,i=2*Math.PI/(n*1.2),r=i*i,s=2*ap(.05,1,1-(e.bounce||0))*Math.sqrt(r);t={...t,mass:Gs.mass,stiffness:r,damping:s}}else{const n=_Ke(e);t={...t,...n,mass:Gs.mass},t.isResolvedFromDuration=!0}return t}function HSe(e=Gs.visualDuration,t=Gs.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:i,restDelta:r}=n;const s=n.keyframes[0],a=n.keyframes[n.keyframes.length-1],l={done:!1,value:s},{stiffness:c,damping:u,mass:d,duration:f,velocity:h,isResolvedFromDuration:m}=PKe({...n,velocity:-Hh(n.velocity||0)}),g=h||0,b=u/(2*Math.sqrt(c*d)),v=a-s,y=Hh(Math.sqrt(c/d)),w=Math.abs(v)<5;i||(i=w?Gs.restSpeed.granular:Gs.restSpeed.default),r||(r=w?Gs.restDelta.granular:Gs.restDelta.default);let x;if(b<1){const S=_$(y,b);x=k=>{const C=Math.exp(-b*y*k);return a-C*((g+b*y*v)/S*Math.sin(S*k)+v*Math.cos(S*k))}}else if(b===1)x=S=>a-Math.exp(-y*S)*(v+(g+y*v)*S);else{const S=y*Math.sqrt(b*b-1);x=k=>{const C=Math.exp(-b*y*k),E=Math.min(S*k,300);return a-C*((g+b*y*v)*Math.sinh(E)+S*v*Math.cosh(E))/S}}const O={calculatedDuration:m&&f||null,next:S=>{const k=x(S);if(m)l.done=S>=f;else{let C=0;b<1&&(C=S===0?Vh(g):VSe(x,S,k));const E=Math.abs(C)<=i,R=Math.abs(a-k)<=r;l.done=E&&R}return l.value=l.done?a:k,l},toString:()=>{const S=Math.min(USe(O),T$),k=mSe(C=>O.next(S*C).value,S,30);return S+"ms "+k}};return O}function nX({keyframes:e,velocity:t=0,power:n=.8,timeConstant:i=325,bounceDamping:r=10,bounceStiffness:s=500,modifyTarget:a,min:l,max:c,restDelta:u=.5,restSpeed:d}){const f=e[0],h={done:!1,value:f},m=E=>l!==void 0&&Ec,g=E=>l===void 0?c:c===void 0||Math.abs(l-E)-b*Math.exp(-E/i),x=E=>y+w(E),O=E=>{const R=w(E),A=x(E);h.done=Math.abs(R)<=u,h.value=h.done?y:A};let S,k;const C=E=>{m(h.value)&&(S=E,k=HSe({keyframes:[h.value,g(h.value)],velocity:VSe(x,E,h.value),damping:r,stiffness:s,restDelta:u,restSpeed:d}))};return C(0),{calculatedDuration:null,next:E=>{let R=!1;return!k&&S===void 0&&(R=!0,O(E),C(E)),S!==void 0&&E>=S?k.next(E-S):(!R&&O(E),h)}}}const DKe=xC(.42,0,1,1),MKe=xC(0,0,.58,1),qSe=xC(.42,0,.58,1),LKe=e=>Array.isArray(e)&&typeof e[0]!="number",$Ke={linear:nu,easeIn:DKe,easeInOut:qSe,easeOut:MKe,circIn:lU,circInOut:ESe,circOut:SSe,backIn:aU,backInOut:OSe,backOut:wSe,anticipate:kSe},iX=e=>{if(oU(e)){Hke(e.length===4);const[t,n,i,r]=e;return xC(t,n,i,r)}else if(typeof e=="string")return $Ke[e];return e};function FKe(e,t,n){const i=[],r=n||zSe,s=e.length-1;for(let a=0;at[0];if(s===2&&t[0]===t[1])return()=>t[1];const a=e[0]===e[1];e[0]>e[s-1]&&(e=[...e].reverse(),t=[...t].reverse());const l=FKe(t,i,r),c=l.length,u=d=>{if(a&&d1)for(;fu(ap(e[0],e[s-1],d)):u}function UKe(e,t){const n=e[e.length-1];for(let i=1;i<=t;i++){const r=qx(0,t,i);e.push(zs(n,1,r))}}function QKe(e){const t=[0];return UKe(t,e.length-1),t}function zKe(e,t){return e.map(n=>n*t)}function VKe(e,t){return e.map(()=>t||qSe).splice(0,e.length-1)}function gN({duration:e=300,keyframes:t,times:n,ease:i="easeInOut"}){const r=LKe(i)?i.map(iX):iX(i),s={done:!1,value:t[0]},a=zKe(n&&n.length===t.length?n:QKe(t),e),l=BKe(a,t,{ease:Array.isArray(r)?r:VKe(t,r)});return{calculatedDuration:e,next:c=>(s.value=l(c),s.done=c>=e,s)}}const HKe=e=>{const t=({timestamp:n})=>e(n);return{start:()=>gs.update(t,!0),stop:()=>ng(t),now:()=>Ra.isProcessing?Ra.timestamp:Rf.now()}},qKe={decay:nX,inertia:nX,tween:gN,keyframes:gN,spring:HSe},WKe=e=>e/100;class pU extends BSe{constructor(t){super(t),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:c}=this.options;c&&c()};const{name:n,motionValue:i,element:r,keyframes:s}=this.options,a=(r==null?void 0:r.KeyframeResolver)||fU,l=(c,u)=>this.onKeyframesResolved(c,u);this.resolver=new a(s,l,n,i,r),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(t){const{type:n="keyframes",repeat:i=0,repeatDelay:r=0,repeatType:s,velocity:a=0}=this.options,l=sU(n)?n:qKe[n]||gN;let c,u;l!==gN&&typeof t[0]!="number"&&(c=wC(WKe,zSe(t[0],t[1])),t=[0,100]);const d=l({...this.options,keyframes:t});s==="mirror"&&(u=l({...this.options,keyframes:[...t].reverse(),velocity:-a})),d.calculatedDuration===null&&(d.calculatedDuration=USe(d));const{calculatedDuration:f}=d,h=f+r,m=h*(i+1)-r;return{generator:d,mirroredGenerator:u,mapPercentToKeyframes:c,calculatedDuration:f,resolvedDuration:h,totalDuration:m}}onPostResolved(){const{autoplay:t=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!t?this.pause():this.state=this.pendingPlayState}tick(t,n=!1){const{resolved:i}=this;if(!i){const{keyframes:E}=this.options;return{done:!0,value:E[E.length-1]}}const{finalKeyframe:r,generator:s,mirroredGenerator:a,mapPercentToKeyframes:l,keyframes:c,calculatedDuration:u,totalDuration:d,resolvedDuration:f}=i;if(this.startTime===null)return s.next(0);const{delay:h,repeat:m,repeatType:g,repeatDelay:b,onUpdate:v}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-d/this.speed,this.startTime)),n?this.currentTime=t:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(t-this.startTime)*this.speed;const y=this.currentTime-h*(this.speed>=0?1:-1),w=this.speed>=0?y<0:y>d;this.currentTime=Math.max(y,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=d);let x=this.currentTime,O=s;if(m){const E=Math.min(this.currentTime,d)/f;let R=Math.floor(E),A=E%1;!A&&E>=1&&(A=1),A===1&&R--,R=Math.min(R,m+1),!!(R%2)&&(g==="reverse"?(A=1-A,b&&(A-=b/f)):g==="mirror"&&(O=a)),x=ap(0,1,A)*f}const S=w?{done:!1,value:c[0]}:O.next(x);l&&(S.value=l(S.value));let{done:k}=S;!w&&u!==null&&(k=this.speed>=0?this.currentTime>=d:this.currentTime<=0);const C=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&k);return C&&r!==void 0&&(S.value=FI(c,this.options,r)),v&&v(S.value),C&&this.finish(),S}get duration(){const{resolved:t}=this;return t?Hh(t.calculatedDuration):0}get time(){return Hh(this.currentTime)}set time(t){t=Vh(t),this.currentTime=t,this.holdTime!==null||this.speed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.speed)}get speed(){return this.playbackSpeed}set speed(t){const n=this.playbackSpeed!==t;this.playbackSpeed=t,n&&(this.time=Hh(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:t=HKe,onPlay:n,startTime:i}=this.options;this.driver||(this.driver=t(s=>this.tick(s))),n&&n();const r=this.driver.now();this.holdTime!==null?this.startTime=r-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=r):this.startTime=i??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var t;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(t=this.currentTime)!==null&&t!==void 0?t:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:t}=this.options;t&&t()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}}const KKe=new Set(["opacity","clipPath","filter","transform"]);function GKe(e,t,n,{delay:i=0,duration:r=300,repeat:s=0,repeatType:a="loop",ease:l="easeInOut",times:c}={}){const u={[t]:n};c&&(u.offset=c);const d=bSe(l,r);return Array.isArray(d)&&(u.easing=d),e.animate(u,{delay:i,duration:r,easing:Array.isArray(d)?"linear":d,fill:"both",iterations:s+1,direction:a==="reverse"?"alternate":"normal"})}const XKe=rU(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),bN=10,YKe=2e4;function ZKe(e){return sU(e.type)||e.type==="spring"||!gSe(e.ease)}function JKe(e,t){const n=new pU({...t,keyframes:e,repeat:0,delay:0,isGenerator:!0});let i={done:!1,value:e[0]};const r=[];let s=0;for(;!i.done&&sthis.onKeyframesResolved(a,l),n,i,r),this.resolver.scheduleResolve()}initPlayback(t,n){let{duration:i=300,times:r,ease:s,type:a,motionValue:l,name:c,startTime:u}=this.options;if(!l.owner||!l.owner.current)return!1;if(typeof s=="string"&&pN()&&eGe(s)&&(s=WSe[s]),ZKe(this.options)){const{onComplete:f,onUpdate:h,motionValue:m,element:g,...b}=this.options,v=JKe(t,b);t=v.keyframes,t.length===1&&(t[1]=t[0]),i=v.duration,r=v.times,s=v.ease,a="keyframes"}const d=GKe(l.owner.current,c,t,{...this.options,duration:i,times:r,ease:s});return d.startTime=u??this.calcStartTime(),this.pendingTimeline?(qG(d,this.pendingTimeline),this.pendingTimeline=void 0):d.onfinish=()=>{const{onComplete:f}=this.options;l.set(FI(t,this.options,n)),f&&f(),this.cancel(),this.resolveFinishedPromise()},{animation:d,duration:i,times:r,type:a,ease:s,keyframes:t}}get duration(){const{resolved:t}=this;if(!t)return 0;const{duration:n}=t;return Hh(n)}get time(){const{resolved:t}=this;if(!t)return 0;const{animation:n}=t;return Hh(n.currentTime||0)}set time(t){const{resolved:n}=this;if(!n)return;const{animation:i}=n;i.currentTime=Vh(t)}get speed(){const{resolved:t}=this;if(!t)return 1;const{animation:n}=t;return n.playbackRate}set speed(t){const{resolved:n}=this;if(!n)return;const{animation:i}=n;i.playbackRate=t}get state(){const{resolved:t}=this;if(!t)return"idle";const{animation:n}=t;return n.playState}get startTime(){const{resolved:t}=this;if(!t)return null;const{animation:n}=t;return n.startTime}attachTimeline(t){if(!this._resolved)this.pendingTimeline=t;else{const{resolved:n}=this;if(!n)return nu;const{animation:i}=n;qG(i,t)}return nu}play(){if(this.isStopped)return;const{resolved:t}=this;if(!t)return;const{animation:n}=t;n.playState==="finished"&&this.updateFinishedPromise(),n.play()}pause(){const{resolved:t}=this;if(!t)return;const{animation:n}=t;n.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:t}=this;if(!t)return;const{animation:n,keyframes:i,duration:r,type:s,ease:a,times:l}=t;if(n.playState==="idle"||n.playState==="finished")return;if(this.time){const{motionValue:u,onUpdate:d,onComplete:f,element:h,...m}=this.options,g=new pU({...m,keyframes:i,duration:r,type:s,ease:a,times:l,isGenerator:!0}),b=Vh(this.time);u.setWithVelocity(g.sample(b-bN).value,g.sample(b).value,bN)}const{onStop:c}=this.options;c&&c(),this.cancel()}complete(){const{resolved:t}=this;t&&t.animation.finish()}cancel(){const{resolved:t}=this;t&&t.animation.cancel()}static supports(t){const{motionValue:n,name:i,repeatDelay:r,repeatType:s,damping:a,type:l}=t;if(!n||!n.owner||!(n.owner.current instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:u}=n.owner.getProps();return XKe()&&i&&KKe.has(i)&&!c&&!u&&!r&&s!=="mirror"&&a!==0&&l!=="inertia"}}const tGe={type:"spring",stiffness:500,damping:25,restSpeed:10},nGe=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),iGe={type:"keyframes",duration:.8},rGe={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},sGe=(e,{keyframes:t})=>t.length>2?iGe:Hy.has(e)?e.startsWith("scale")?nGe(t[1]):tGe:rGe;function oGe({when:e,delay:t,delayChildren:n,staggerChildren:i,staggerDirection:r,repeat:s,repeatType:a,repeatDelay:l,from:c,elapsed:u,...d}){return!!Object.keys(d).length}const mU=(e,t,n,i={},r,s)=>a=>{const l=eU(i,e)||{},c=l.delay||i.delay||0;let{elapsed:u=0}=i;u=u-Vh(c);let d={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...l,delay:-u,onUpdate:h=>{t.set(h),l.onUpdate&&l.onUpdate(h)},onComplete:()=>{a(),l.onComplete&&l.onComplete()},name:e,motionValue:t,element:s?void 0:r};oGe(l)||(d={...d,...sGe(e,d)}),d.duration&&(d.duration=Vh(d.duration)),d.repeatDelay&&(d.repeatDelay=Vh(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let f=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(d.duration=0,d.delay===0&&(f=!0)),f&&!s&&t.get()!==void 0){const h=FI(d.keyframes,l);if(h!==void 0)return gs.update(()=>{d.onUpdate(h),d.onComplete()}),new $We([])}return!s&&rX.supports(d)?new rX(d):new pU(d)};function aGe({protectedKeys:e,needsAnimating:t},n){const i=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,i}function KSe(e,t,{delay:n=0,transitionOverride:i,type:r}={}){var s;let{transition:a=e.getDefaultTransition(),transitionEnd:l,...c}=t;i&&(a=i);const u=[],d=r&&e.animationState&&e.animationState.getState()[r];for(const f in c){const h=e.getValue(f,(s=e.latestValues[f])!==null&&s!==void 0?s:null),m=c[f];if(m===void 0||d&&aGe(d,f))continue;const g={delay:n,...eU(a||{},f)};let b=!1;if(window.MotionHandoffAnimation){const y=pSe(e);if(y){const w=window.MotionHandoffAnimation(y,f,gs);w!==null&&(g.startTime=w,b=!0)}}w$(e,f),h.start(mU(f,h,m,e.shouldReduceMotion&&fSe.has(f)?{type:!1}:g,e,b));const v=h.animation;v&&u.push(v)}return l&&Promise.all(u).then(()=>{gs.update(()=>{l&&PWe(e,l)})}),u}function j$(e,t,n={}){var i;const r=$I(e,t,n.type==="exit"?(i=e.presenceContext)===null||i===void 0?void 0:i.custom:void 0);let{transition:s=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(s=n.transitionOverride);const a=r?()=>Promise.all(KSe(e,r,n)):()=>Promise.resolve(),l=e.variantChildren&&e.variantChildren.size?(u=0)=>{const{delayChildren:d=0,staggerChildren:f,staggerDirection:h}=s;return lGe(e,t,d+u,f,h,n)}:()=>Promise.resolve(),{when:c}=s;if(c){const[u,d]=c==="beforeChildren"?[a,l]:[l,a];return u().then(()=>d())}else return Promise.all([a(),l(n.delay)])}function lGe(e,t,n=0,i=0,r=1,s){const a=[],l=(e.variantChildren.size-1)*i,c=r===1?(u=0)=>u*i:(u=0)=>l-u*i;return Array.from(e.variantChildren).sort(cGe).forEach((u,d)=>{u.notify("AnimationStart",t),a.push(j$(u,t,{...s,delay:n+c(d)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(a)}function cGe(e,t){return e.sortNodePosition(t)}function uGe(e,t,n={}){e.notify("AnimationStart",t);let i;if(Array.isArray(t)){const r=t.map(s=>j$(e,s,n));i=Promise.all(r)}else if(typeof t=="string")i=j$(e,t,n);else{const r=typeof t=="function"?$I(e,t,n.custom):t;i=Promise.all(KSe(e,r,n))}return i.then(()=>{e.notify("AnimationComplete",t)})}const dGe=Q7.length;function GSe(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?GSe(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;nPromise.all(t.map(({animation:n,options:i})=>uGe(e,n,i)))}function mGe(e){let t=pGe(e),n=sX(),i=!0;const r=c=>(u,d)=>{var f;const h=$I(e,d,c==="exit"?(f=e.presenceContext)===null||f===void 0?void 0:f.custom:void 0);if(h){const{transition:m,transitionEnd:g,...b}=h;u={...u,...b,...g}}return u};function s(c){t=c(e)}function a(c){const{props:u}=e,d=GSe(e.parent)||{},f=[],h=new Set;let m={},g=1/0;for(let v=0;vg&&O,R=!1;const A=Array.isArray(x)?x:[x];let j=A.reduce(r(y),{});S===!1&&(j={});const{prevResolvedValues:T={}}=w,N={...T,...j},_=P=>{E=!0,h.has(P)&&(R=!0,h.delete(P)),w.needsAnimating[P]=!0;const L=e.getValue(P);L&&(L.liveStyle=!1)};for(const P in N){const L=j[P],B=T[P];if(m.hasOwnProperty(P))continue;let I=!1;x$(L)&&x$(B)?I=!dSe(L,B):I=L!==B,I?L!=null?_(P):h.add(P):L!==void 0&&h.has(P)?_(P):w.protectedKeys[P]=!0}w.prevProp=x,w.prevResolvedValues=j,w.isActive&&(m={...m,...j}),i&&e.blockInitialAnimation&&(E=!1),E&&(!(k&&C)||R)&&f.push(...A.map(P=>({animation:P,options:{type:y}})))}if(h.size){const v={};h.forEach(y=>{const w=e.getBaseTarget(y),x=e.getValue(y);x&&(x.liveStyle=!0),v[y]=w??null}),f.push({animation:v})}let b=!!f.length;return i&&(u.initial===!1||u.initial===u.animate)&&!e.manuallyAnimateOnMount&&(b=!1),i=!1,b?t(f):Promise.resolve()}function l(c,u){var d;if(n[c].isActive===u)return Promise.resolve();(d=e.variantChildren)===null||d===void 0||d.forEach(h=>{var m;return(m=h.animationState)===null||m===void 0?void 0:m.setActive(c,u)}),n[c].isActive=u;const f=a(c);for(const h in n)n[h].protectedKeys={};return f}return{animateChanges:a,setActive:l,setAnimateFunction:s,getState:()=>n,reset:()=>{n=sX(),i=!0}}}function gGe(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!dSe(t,e):!1}function Jg(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function sX(){return{animate:Jg(!0),whileInView:Jg(),whileHover:Jg(),whileTap:Jg(),whileDrag:Jg(),whileFocus:Jg(),exit:Jg()}}class Ag{constructor(t){this.isMounted=!1,this.node=t}update(){}}class bGe extends Ag{constructor(t){super(t),t.animationState||(t.animationState=mGe(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();MI(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)===null||t===void 0||t.call(this)}}let yGe=0;class vGe extends Ag{constructor(){super(...arguments),this.id=yGe++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const r=this.node.animationState.setActive("exit",!t);n&&!t&&r.then(()=>n(this.id))}mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}const xGe={animation:{Feature:bGe},exit:{Feature:vGe}},md={x:!1,y:!1};function XSe(){return md.x||md.y}function wGe(e){return e==="x"||e==="y"?md[e]?null:(md[e]=!0,()=>{md[e]=!1}):md.x||md.y?null:(md.x=md.y=!0,()=>{md.x=md.y=!1})}const gU=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function zS(e,t,n,i={passive:!0}){return e.addEventListener(t,n,i),()=>e.removeEventListener(t,n)}function OC(e){return{point:{x:e.pageX,y:e.pageY}}}const OGe=e=>t=>gU(t)&&e(t,OC(t));function $k(e,t,n,i){return zS(e,t,OGe(n),i)}const oX=(e,t)=>Math.abs(e-t);function kGe(e,t){const n=oX(e.x,t.x),i=oX(e.y,t.y);return Math.sqrt(n**2+i**2)}class YSe{constructor(t,n,{transformPagePoint:i,contextWindow:r,dragSnapToOrigin:s=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const f=R5(this.lastMoveEventInfo,this.history),h=this.startEvent!==null,m=kGe(f.offset,{x:0,y:0})>=3;if(!h&&!m)return;const{point:g}=f,{timestamp:b}=Ra;this.history.push({...g,timestamp:b});const{onStart:v,onMove:y}=this.handlers;h||(v&&v(this.lastMoveEvent,f),this.startEvent=this.lastMoveEvent),y&&y(this.lastMoveEvent,f)},this.handlePointerMove=(f,h)=>{this.lastMoveEvent=f,this.lastMoveEventInfo=N5(h,this.transformPagePoint),gs.update(this.updatePoint,!0)},this.handlePointerUp=(f,h)=>{this.end();const{onEnd:m,onSessionEnd:g,resumeAnimation:b}=this.handlers;if(this.dragSnapToOrigin&&b&&b(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const v=R5(f.type==="pointercancel"?this.lastMoveEventInfo:N5(h,this.transformPagePoint),this.history);this.startEvent&&m&&m(f,v),g&&g(f,v)},!gU(t))return;this.dragSnapToOrigin=s,this.handlers=n,this.transformPagePoint=i,this.contextWindow=r||window;const a=OC(t),l=N5(a,this.transformPagePoint),{point:c}=l,{timestamp:u}=Ra;this.history=[{...c,timestamp:u}];const{onSessionStart:d}=n;d&&d(t,R5(l,this.history)),this.removeListeners=wC($k(this.contextWindow,"pointermove",this.handlePointerMove),$k(this.contextWindow,"pointerup",this.handlePointerUp),$k(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),ng(this.updatePoint)}}function N5(e,t){return t?{point:t(e.point)}:e}function aX(e,t){return{x:e.x-t.x,y:e.y-t.y}}function R5({point:e},t){return{point:e,delta:aX(e,ZSe(t)),offset:aX(e,SGe(t)),velocity:EGe(t,.1)}}function SGe(e){return e[0]}function ZSe(e){return e[e.length-1]}function EGe(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,i=null;const r=ZSe(e);for(;n>=0&&(i=e[n],!(r.timestamp-i.timestamp>Vh(t)));)n--;if(!i)return{x:0,y:0};const s=Hh(r.timestamp-i.timestamp);if(s===0)return{x:0,y:0};const a={x:(r.x-i.x)/s,y:(r.y-i.y)/s};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}const JSe=1e-4,CGe=1-JSe,TGe=1+JSe,eEe=.01,AGe=0-eEe,_Ge=0+eEe;function uu(e){return e.max-e.min}function jGe(e,t,n){return Math.abs(e-t)<=n}function lX(e,t,n,i=.5){e.origin=i,e.originPoint=zs(t.min,t.max,e.origin),e.scale=uu(n)/uu(t),e.translate=zs(n.min,n.max,e.origin)-e.originPoint,(e.scale>=CGe&&e.scale<=TGe||isNaN(e.scale))&&(e.scale=1),(e.translate>=AGe&&e.translate<=_Ge||isNaN(e.translate))&&(e.translate=0)}function Fk(e,t,n,i){lX(e.x,t.x,n.x,i?i.originX:void 0),lX(e.y,t.y,n.y,i?i.originY:void 0)}function cX(e,t,n){e.min=n.min+t.min,e.max=e.min+uu(t)}function NGe(e,t,n){cX(e.x,t.x,n.x),cX(e.y,t.y,n.y)}function uX(e,t,n){e.min=t.min-n.min,e.max=e.min+uu(t)}function Bk(e,t,n){uX(e.x,t.x,n.x),uX(e.y,t.y,n.y)}function RGe(e,{min:t,max:n},i){return t!==void 0&&en&&(e=i?zs(n,e,i.max):Math.min(e,n)),e}function dX(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function IGe(e,{top:t,left:n,bottom:i,right:r}){return{x:dX(e.x,n,r),y:dX(e.y,t,i)}}function fX(e,t){let n=t.min-e.min,i=t.max-e.max;return t.max-t.mini?n=qx(t.min,t.max-i,e.min):i>r&&(n=qx(e.min,e.max-r,t.min)),ap(0,1,n)}function MGe(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const N$=.35;function LGe(e=N$){return e===!1?e=0:e===!0&&(e=N$),{x:hX(e,"left","right"),y:hX(e,"top","bottom")}}function hX(e,t,n){return{min:pX(e,t),max:pX(e,n)}}function pX(e,t){return typeof e=="number"?e:e[t]||0}const mX=()=>({translate:0,scale:1,origin:0,originPoint:0}),Pv=()=>({x:mX(),y:mX()}),gX=()=>({min:0,max:0}),lo=()=>({x:gX(),y:gX()});function ku(e){return[e("x"),e("y")]}function tEe({top:e,left:t,right:n,bottom:i}){return{x:{min:t,max:n},y:{min:e,max:i}}}function $Ge({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function FGe(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),i=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:i.y,right:i.x}}function I5(e){return e===void 0||e===1}function R$({scale:e,scaleX:t,scaleY:n}){return!I5(e)||!I5(t)||!I5(n)}function gb(e){return R$(e)||nEe(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function nEe(e){return bX(e.x)||bX(e.y)}function bX(e){return e&&e!=="0%"}function yN(e,t,n){const i=e-n,r=t*i;return n+r}function yX(e,t,n,i,r){return r!==void 0&&(e=yN(e,r,i)),yN(e,n,i)+t}function I$(e,t=0,n=1,i,r){e.min=yX(e.min,t,n,i,r),e.max=yX(e.max,t,n,i,r)}function iEe(e,{x:t,y:n}){I$(e.x,t.translate,t.scale,t.originPoint),I$(e.y,n.translate,n.scale,n.originPoint)}const vX=.999999999999,xX=1.0000000000001;function BGe(e,t,n,i=!1){const r=n.length;if(!r)return;t.x=t.y=1;let s,a;for(let l=0;lvX&&(t.x=1),t.yvX&&(t.y=1)}function Dv(e,t){e.min=e.min+t,e.max=e.max+t}function wX(e,t,n,i,r=.5){const s=zs(e.min,e.max,r);I$(e,t,n,s,i)}function Mv(e,t){wX(e.x,t.x,t.scaleX,t.scale,t.originX),wX(e.y,t.y,t.scaleY,t.scale,t.originY)}function rEe(e,t){return tEe(FGe(e.getBoundingClientRect(),t))}function UGe(e,t,n){const i=rEe(e,n),{scroll:r}=t;return r&&(Dv(i.x,r.offset.x),Dv(i.y,r.offset.y)),i}const sEe=({current:e})=>e?e.ownerDocument.defaultView:null,QGe=new WeakMap;class zGe{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=lo(),this.visualElement=t}start(t,{snapToCursor:n=!1}={}){const{presenceContext:i}=this.visualElement;if(i&&i.isPresent===!1)return;const r=d=>{const{dragSnapToOrigin:f}=this.getProps();f?this.pauseAnimation():this.stopAnimation(),n&&this.snapToCursor(OC(d).point)},s=(d,f)=>{const{drag:h,dragPropagation:m,onDragStart:g}=this.getProps();if(h&&!m&&(this.openDragLock&&this.openDragLock(),this.openDragLock=wGe(h),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),ku(v=>{let y=this.getAxisMotionValue(v).get()||0;if(Nf.test(y)){const{projection:w}=this.visualElement;if(w&&w.layout){const x=w.layout.layoutBox[v];x&&(y=uu(x)*(parseFloat(y)/100))}}this.originPoint[v]=y}),g&&gs.postRender(()=>g(d,f)),w$(this.visualElement,"transform");const{animationState:b}=this.visualElement;b&&b.setActive("whileDrag",!0)},a=(d,f)=>{const{dragPropagation:h,dragDirectionLock:m,onDirectionLock:g,onDrag:b}=this.getProps();if(!h&&!this.openDragLock)return;const{offset:v}=f;if(m&&this.currentDirection===null){this.currentDirection=VGe(v),this.currentDirection!==null&&g&&g(this.currentDirection);return}this.updateAxis("x",f.point,v),this.updateAxis("y",f.point,v),this.visualElement.render(),b&&b(d,f)},l=(d,f)=>this.stop(d,f),c=()=>ku(d=>{var f;return this.getAnimationState(d)==="paused"&&((f=this.getAxisMotionValue(d).animation)===null||f===void 0?void 0:f.play())}),{dragSnapToOrigin:u}=this.getProps();this.panSession=new YSe(t,{onSessionStart:r,onStart:s,onMove:a,onSessionEnd:l,resumeAnimation:c},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:u,contextWindow:sEe(this.visualElement)})}stop(t,n){const i=this.isDragging;if(this.cancel(),!i)return;const{velocity:r}=n;this.startAnimation(r);const{onDragEnd:s}=this.getProps();s&&gs.postRender(()=>s(t,n))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,i){const{drag:r}=this.getProps();if(!i||!k2(t,r,this.currentDirection))return;const s=this.getAxisMotionValue(t);let a=this.originPoint[t]+i[t];this.constraints&&this.constraints[t]&&(a=RGe(a,this.constraints[t],this.elastic[t])),s.set(a)}resolveConstraints(){var t;const{dragConstraints:n,dragElastic:i}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(t=this.visualElement.projection)===null||t===void 0?void 0:t.layout,s=this.constraints;n&&Rv(n)?this.constraints||(this.constraints=this.resolveRefConstraints()):n&&r?this.constraints=IGe(r.layoutBox,n):this.constraints=!1,this.elastic=LGe(i),s!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&ku(a=>{this.constraints!==!1&&this.getAxisMotionValue(a)&&(this.constraints[a]=MGe(r.layoutBox[a],this.constraints[a]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Rv(t))return!1;const i=t.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;const s=UGe(i,r.root,this.visualElement.getTransformPagePoint());let a=PGe(r.layout.layoutBox,s);if(n){const l=n($Ge(a));this.hasMutatedConstraints=!!l,l&&(a=tEe(l))}return a}startAnimation(t){const{drag:n,dragMomentum:i,dragElastic:r,dragTransition:s,dragSnapToOrigin:a,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},u=ku(d=>{if(!k2(d,n,this.currentDirection))return;let f=c&&c[d]||{};a&&(f={min:0,max:0});const h=r?200:1e6,m=r?40:1e7,g={type:"inertia",velocity:i?t[d]:0,bounceStiffness:h,bounceDamping:m,timeConstant:750,restDelta:1,restSpeed:10,...s,...f};return this.startAxisValueAnimation(d,g)});return Promise.all(u).then(l)}startAxisValueAnimation(t,n){const i=this.getAxisMotionValue(t);return w$(this.visualElement,t),i.start(mU(t,i,0,n,this.visualElement,!1))}stopAnimation(){ku(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){ku(t=>{var n;return(n=this.getAxisMotionValue(t).animation)===null||n===void 0?void 0:n.pause()})}getAnimationState(t){var n;return(n=this.getAxisMotionValue(t).animation)===null||n===void 0?void 0:n.state}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,i=this.visualElement.getProps(),r=i[n];return r||this.visualElement.getValue(t,(i.initial?i.initial[t]:void 0)||0)}snapToCursor(t){ku(n=>{const{drag:i}=this.getProps();if(!k2(n,i,this.currentDirection))return;const{projection:r}=this.visualElement,s=this.getAxisMotionValue(n);if(r&&r.layout){const{min:a,max:l}=r.layout.layoutBox[n];s.set(t[n]-zs(a,l,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:i}=this.visualElement;if(!Rv(n)||!i||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};ku(a=>{const l=this.getAxisMotionValue(a);if(l&&this.constraints!==!1){const c=l.get();r[a]=DGe({min:c,max:c},this.constraints[a])}});const{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),ku(a=>{if(!k2(a,t,null))return;const l=this.getAxisMotionValue(a),{min:c,max:u}=this.constraints[a];l.set(zs(c,u,r[a]))})}addListeners(){if(!this.visualElement.current)return;QGe.set(this.visualElement,this);const t=this.visualElement.current,n=$k(t,"pointerdown",c=>{const{drag:u,dragListener:d=!0}=this.getProps();u&&d&&this.start(c)}),i=()=>{const{dragConstraints:c}=this.getProps();Rv(c)&&c.current&&(this.constraints=this.resolveRefConstraints())},{projection:r}=this.visualElement,s=r.addEventListener("measure",i);r&&!r.layout&&(r.root&&r.root.updateScroll(),r.updateLayout()),gs.read(i);const a=zS(window,"resize",()=>this.scalePositionWithinConstraints()),l=r.addEventListener("didUpdate",({delta:c,hasLayoutChanged:u})=>{this.isDragging&&u&&(ku(d=>{const f=this.getAxisMotionValue(d);f&&(this.originPoint[d]+=c[d].translate,f.set(f.get()+c[d].translate))}),this.visualElement.render())});return()=>{a(),n(),s(),l&&l()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:i=!1,dragPropagation:r=!1,dragConstraints:s=!1,dragElastic:a=N$,dragMomentum:l=!0}=t;return{...t,drag:n,dragDirectionLock:i,dragPropagation:r,dragConstraints:s,dragElastic:a,dragMomentum:l}}}function k2(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function VGe(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class HGe extends Ag{constructor(t){super(t),this.removeGroupControls=nu,this.removeListeners=nu,this.controls=new zGe(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||nu}unmount(){this.removeGroupControls(),this.removeListeners()}}const OX=e=>(t,n)=>{e&&gs.postRender(()=>e(t,n))};class qGe extends Ag{constructor(){super(...arguments),this.removePointerDownListener=nu}onPointerDown(t){this.session=new YSe(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:sEe(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:i,onPanEnd:r}=this.node.getProps();return{onSessionStart:OX(t),onStart:OX(n),onMove:i,onEnd:(s,a)=>{delete this.session,r&&gs.postRender(()=>r(s,a))}}}mount(){this.removePointerDownListener=$k(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const I_={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function kX(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const nO={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(Mn.test(e))e=parseFloat(e);else return e;const n=kX(e,t.target.x),i=kX(e,t.target.y);return`${n}% ${i}%`}},WGe={correct:(e,{treeScale:t,projectionDelta:n})=>{const i=e,r=ig.parse(e);if(r.length>5)return i;const s=ig.createTransformer(e),a=typeof r[0]!="number"?1:0,l=n.x.scale*t.x,c=n.y.scale*t.y;r[0+a]/=l,r[1+a]/=c;const u=zs(l,c,.5);return typeof r[2+a]=="number"&&(r[2+a]/=u),typeof r[3+a]=="number"&&(r[3+a]/=u),s(r)}};class KGe extends p.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i,layoutId:r}=this.props,{projection:s}=t;xWe(GGe),s&&(n.group&&n.group.add(s),i&&i.register&&r&&i.register(s),s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,onExitComplete:()=>this.safeToRemove()})),I_.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:i,drag:r,isPresent:s}=this.props,a=i.projection;return a&&(a.isPresent=s,r||t.layoutDependency!==n||n===void 0?a.willUpdate():this.safeToRemove(),t.isPresent!==s&&(s?a.promote():a.relegate()||gs.postRender(()=>{const l=a.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),V7.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i}=this.props,{projection:r}=t;r&&(r.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(r),i&&i.deregister&&i.deregister(r))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function oEe(e){const[t,n]=zke(),i=p.useContext(F7);return o.jsx(KGe,{...e,layoutGroup:i,switchLayoutGroup:p.useContext(Zke),isPresent:t,safeToRemove:n})}const GGe={borderRadius:{...nO,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:nO,borderTopRightRadius:nO,borderBottomLeftRadius:nO,borderBottomRightRadius:nO,boxShadow:WGe};function XGe(e,t,n){const i=ll(e)?e:US(e);return i.start(mU("",i,t,n)),i.animation}function YGe(e){return e instanceof SVGElement&&e.tagName!=="svg"}const ZGe=(e,t)=>e.depth-t.depth;class JGe{constructor(){this.children=[],this.isDirty=!1}add(t){tU(this.children,t),this.isDirty=!0}remove(t){nU(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(ZGe),this.isDirty=!1,this.children.forEach(t)}}function eXe(e,t){const n=Rf.now(),i=({timestamp:r})=>{const s=r-n;s>=t&&(ng(i),e(s-t))};return gs.read(i,!0),()=>ng(i)}const aEe=["TopLeft","TopRight","BottomLeft","BottomRight"],tXe=aEe.length,SX=e=>typeof e=="string"?parseFloat(e):e,EX=e=>typeof e=="number"||Mn.test(e);function nXe(e,t,n,i,r,s){r?(e.opacity=zs(0,n.opacity!==void 0?n.opacity:1,iXe(i)),e.opacityExit=zs(t.opacity!==void 0?t.opacity:1,0,rXe(i))):s&&(e.opacity=zs(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,i));for(let a=0;ait?1:n(qx(e,t,i))}function TX(e,t){e.min=t.min,e.max=t.max}function Ou(e,t){TX(e.x,t.x),TX(e.y,t.y)}function AX(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}function _X(e,t,n,i,r){return e-=t,e=yN(e,1/n,i),r!==void 0&&(e=yN(e,1/r,i)),e}function sXe(e,t=0,n=1,i=.5,r,s=e,a=e){if(Nf.test(t)&&(t=parseFloat(t),t=zs(a.min,a.max,t/100)-a.min),typeof t!="number")return;let l=zs(s.min,s.max,i);e===s&&(l-=t),e.min=_X(e.min,t,n,l,r),e.max=_X(e.max,t,n,l,r)}function jX(e,t,[n,i,r],s,a){sXe(e,t[n],t[i],t[r],t.scale,s,a)}const oXe=["x","scaleX","originX"],aXe=["y","scaleY","originY"];function NX(e,t,n,i){jX(e.x,t,oXe,n?n.x:void 0,i?i.x:void 0),jX(e.y,t,aXe,n?n.y:void 0,i?i.y:void 0)}function RX(e){return e.translate===0&&e.scale===1}function cEe(e){return RX(e.x)&&RX(e.y)}function IX(e,t){return e.min===t.min&&e.max===t.max}function lXe(e,t){return IX(e.x,t.x)&&IX(e.y,t.y)}function PX(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function uEe(e,t){return PX(e.x,t.x)&&PX(e.y,t.y)}function DX(e){return uu(e.x)/uu(e.y)}function MX(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}class cXe{constructor(){this.members=[]}add(t){tU(this.members,t),t.scheduleRender()}remove(t){if(nU(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(r=>t===r);if(n===0)return!1;let i;for(let r=n;r>=0;r--){const s=this.members[r];if(s.isPresent!==!1){i=s;break}}return i?(this.promote(i),!0):!1}promote(t,n){const i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,n&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:r}=t.options;r===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:i}=t;n.onExitComplete&&n.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function uXe(e,t,n){let i="";const r=e.x.translate/t.x,s=e.y.translate/t.y,a=(n==null?void 0:n.z)||0;if((r||s||a)&&(i=`translate3d(${r}px, ${s}px, ${a}px) `),(t.x!==1||t.y!==1)&&(i+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:u,rotate:d,rotateX:f,rotateY:h,skewX:m,skewY:g}=n;u&&(i=`perspective(${u}px) ${i}`),d&&(i+=`rotate(${d}deg) `),f&&(i+=`rotateX(${f}deg) `),h&&(i+=`rotateY(${h}deg) `),m&&(i+=`skewX(${m}deg) `),g&&(i+=`skewY(${g}deg) `)}const l=e.x.scale*t.x,c=e.y.scale*t.y;return(l!==1||c!==1)&&(i+=`scale(${l}, ${c})`),i||"none"}const bb={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},YO=typeof window<"u"&&window.MotionDebug!==void 0,P5=["","X","Y","Z"],dXe={visibility:"hidden"},LX=1e3;let fXe=0;function D5(e,t,n,i){const{latestValues:r}=t;r[e]&&(n[e]=r[e],t.setStaticValue(e,0),i&&(i[e]=0))}function dEe(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=pSe(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:r,layoutId:s}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",gs,!(r||s))}const{parent:i}=e;i&&!i.hasCheckedOptimisedAppear&&dEe(i)}function fEe({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:i,resetTransform:r}){return class{constructor(a={},l=t==null?void 0:t()){this.id=fXe++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,YO&&(bb.totalNodes=bb.resolvedTargetDeltas=bb.recalculatedProjection=0),this.nodes.forEach(mXe),this.nodes.forEach(xXe),this.nodes.forEach(wXe),this.nodes.forEach(gXe),YO&&window.MotionDebug.record(bb)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=a,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0;for(let c=0;cthis.root.updateBlockedByResize=!1;e(a,()=>{this.root.updateBlockedByResize=!0,f&&f(),f=eXe(h,250),I_.hasAnimatedSinceResize&&(I_.hasAnimatedSinceResize=!1,this.nodes.forEach(FX))})}c&&this.root.registerSharedNode(c,this),this.options.animate!==!1&&d&&(c||u)&&this.addEventListener("didUpdate",({delta:f,hasLayoutChanged:h,hasRelativeTargetChanged:m,layout:g})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const b=this.options.transition||d.getDefaultTransition()||CXe,{onLayoutAnimationStart:v,onLayoutAnimationComplete:y}=d.getProps(),w=!this.targetLayout||!uEe(this.targetLayout,g)||m,x=!h&&m;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||x||h&&(w||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(f,x);const O={...eU(b,"layout"),onPlay:v,onComplete:y};(d.shouldReduceMotion||this.options.layoutRoot)&&(O.delay=0,O.type=!1),this.startAnimation(O)}else h||FX(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=g})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const a=this.getStack();a&&a.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,ng(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(OXe),this.animationId++)}getTransformTemplate(){const{visualElement:a}=this.options;return a&&a.getProps().transformTemplate}willUpdate(a=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&dEe(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c{const S=O/1e3;BX(f.x,a.x,S),BX(f.y,a.y,S),this.setTargetDelta(f),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Bk(h,this.layout.layoutBox,this.relativeParent.layout.layoutBox),SXe(this.relativeTarget,this.relativeTargetOrigin,h,S),x&&lXe(this.relativeTarget,x)&&(this.isProjectionDirty=!1),x||(x=lo()),Ou(x,this.relativeTarget)),b&&(this.animationValues=d,nXe(d,u,this.latestValues,S,w,y)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(a){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(ng(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=gs.update(()=>{I_.hasAnimatedSinceResize=!0,this.currentAnimation=XGe(0,LX,{...a,onUpdate:l=>{this.mixTargetDelta(l),a.onUpdate&&a.onUpdate(l)},onComplete:()=>{a.onComplete&&a.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const a=this.getStack();a&&a.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(LX),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const a=this.getLead();let{targetWithTransforms:l,target:c,layout:u,latestValues:d}=a;if(!(!l||!c||!u)){if(this!==a&&this.layout&&u&&hEe(this.options.animationType,this.layout.layoutBox,u.layoutBox)){c=this.target||lo();const f=uu(this.layout.layoutBox.x);c.x.min=a.target.x.min,c.x.max=c.x.min+f;const h=uu(this.layout.layoutBox.y);c.y.min=a.target.y.min,c.y.max=c.y.min+h}Ou(l,c),Mv(l,d),Fk(this.projectionDeltaWithTransform,this.layoutCorrected,l,d)}}registerSharedNode(a,l){this.sharedNodes.has(a)||this.sharedNodes.set(a,new cXe),this.sharedNodes.get(a).add(l);const u=l.options.initialPromotionConfig;l.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(l):void 0})}isLead(){const a=this.getStack();return a?a.lead===this:!0}getLead(){var a;const{layoutId:l}=this.options;return l?((a=this.getStack())===null||a===void 0?void 0:a.lead)||this:this}getPrevLead(){var a;const{layoutId:l}=this.options;return l?(a=this.getStack())===null||a===void 0?void 0:a.prevLead:void 0}getStack(){const{layoutId:a}=this.options;if(a)return this.root.sharedNodes.get(a)}promote({needsReset:a,transition:l,preserveFollowOpacity:c}={}){const u=this.getStack();u&&u.promote(this,c),a&&(this.projectionDelta=void 0,this.needsReset=!0),l&&this.setOptions({transition:l})}relegate(){const a=this.getStack();return a?a.relegate(this):!1}resetSkewAndRotation(){const{visualElement:a}=this.options;if(!a)return;let l=!1;const{latestValues:c}=a;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(l=!0),!l)return;const u={};c.z&&D5("z",a,u,this.animationValues);for(let d=0;d{var l;return(l=a.currentAnimation)===null||l===void 0?void 0:l.stop()}),this.root.nodes.forEach($X),this.root.sharedNodes.clear()}}}function hXe(e){e.updateLayout()}function pXe(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&n&&e.hasListeners("didUpdate")){const{layoutBox:i,measuredBox:r}=e.layout,{animationType:s}=e.options,a=n.source!==e.layout.source;s==="size"?ku(f=>{const h=a?n.measuredBox[f]:n.layoutBox[f],m=uu(h);h.min=i[f].min,h.max=h.min+m}):hEe(s,n.layoutBox,i)&&ku(f=>{const h=a?n.measuredBox[f]:n.layoutBox[f],m=uu(i[f]);h.max=h.min+m,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[f].max=e.relativeTarget[f].min+m)});const l=Pv();Fk(l,i,n.layoutBox);const c=Pv();a?Fk(c,e.applyTransform(r,!0),n.measuredBox):Fk(c,i,n.layoutBox);const u=!cEe(l);let d=!1;if(!e.resumeFrom){const f=e.getClosestProjectingParent();if(f&&!f.resumeFrom){const{snapshot:h,layout:m}=f;if(h&&m){const g=lo();Bk(g,n.layoutBox,h.layoutBox);const b=lo();Bk(b,i,m.layoutBox),uEe(g,b)||(d=!0),f.options.layoutRoot&&(e.relativeTarget=b,e.relativeTargetOrigin=g,e.relativeParent=f)}}}e.notifyListeners("didUpdate",{layout:i,snapshot:n,delta:c,layoutDelta:l,hasLayoutChanged:u,hasRelativeTargetChanged:d})}else if(e.isLead()){const{onExitComplete:i}=e.options;i&&i()}e.options.transition=void 0}function mXe(e){YO&&bb.totalNodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function gXe(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function bXe(e){e.clearSnapshot()}function $X(e){e.clearMeasurements()}function yXe(e){e.isLayoutDirty=!1}function vXe(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function FX(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function xXe(e){e.resolveTargetDelta()}function wXe(e){e.calcProjection()}function OXe(e){e.resetSkewAndRotation()}function kXe(e){e.removeLeadSnapshot()}function BX(e,t,n){e.translate=zs(t.translate,0,n),e.scale=zs(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function UX(e,t,n,i){e.min=zs(t.min,n.min,i),e.max=zs(t.max,n.max,i)}function SXe(e,t,n,i){UX(e.x,t.x,n.x,i),UX(e.y,t.y,n.y,i)}function EXe(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const CXe={duration:.45,ease:[.4,0,.1,1]},QX=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),zX=QX("applewebkit/")&&!QX("chrome/")?Math.round:nu;function VX(e){e.min=zX(e.min),e.max=zX(e.max)}function TXe(e){VX(e.x),VX(e.y)}function hEe(e,t,n){return e==="position"||e==="preserve-aspect"&&!jGe(DX(t),DX(n),.2)}function AXe(e){var t;return e!==e.root&&((t=e.scroll)===null||t===void 0?void 0:t.wasRoot)}const _Xe=fEe({attachResizeListener:(e,t)=>zS(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),M5={current:void 0},pEe=fEe({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!M5.current){const e=new _Xe({});e.mount(window),e.setOptions({layoutScroll:!0}),M5.current=e}return M5.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),jXe={pan:{Feature:qGe},drag:{Feature:HGe,ProjectionNode:pEe,MeasureLayout:oEe}};function NXe(e,t,n){var i;if(e instanceof Element)return[e];if(typeof e=="string"){let r=document;const s=(i=void 0)!==null&&i!==void 0?i:r.querySelectorAll(e);return s?Array.from(s):[]}return Array.from(e)}function mEe(e,t){const n=NXe(e),i=new AbortController,r={passive:!0,...t,signal:i.signal};return[n,r,()=>i.abort()]}function HX(e){return t=>{t.pointerType==="touch"||XSe()||e(t)}}function RXe(e,t,n={}){const[i,r,s]=mEe(e,n),a=HX(l=>{const{target:c}=l,u=t(l);if(typeof u!="function"||!c)return;const d=HX(f=>{u(f),c.removeEventListener("pointerleave",d)});c.addEventListener("pointerleave",d,r)});return i.forEach(l=>{l.addEventListener("pointerenter",a,r)}),s}function qX(e,t,n){const{props:i}=e;e.animationState&&i.whileHover&&e.animationState.setActive("whileHover",n==="Start");const r="onHover"+n,s=i[r];s&&gs.postRender(()=>s(t,OC(t)))}class IXe extends Ag{mount(){const{current:t}=this.node;t&&(this.unmount=RXe(t,n=>(qX(this.node,n,"Start"),i=>qX(this.node,i,"End"))))}unmount(){}}class PXe extends Ag{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=wC(zS(this.node.current,"focus",()=>this.onFocus()),zS(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const gEe=(e,t)=>t?e===t?!0:gEe(e,t.parentElement):!1,DXe=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function MXe(e){return DXe.has(e.tagName)||e.tabIndex!==-1}const ZO=new WeakSet;function WX(e){return t=>{t.key==="Enter"&&e(t)}}function L5(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const LXe=(e,t)=>{const n=e.currentTarget;if(!n)return;const i=WX(()=>{if(ZO.has(n))return;L5(n,"down");const r=WX(()=>{L5(n,"up")}),s=()=>L5(n,"cancel");n.addEventListener("keyup",r,t),n.addEventListener("blur",s,t)});n.addEventListener("keydown",i,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",i),t)};function KX(e){return gU(e)&&!XSe()}function $Xe(e,t,n={}){const[i,r,s]=mEe(e,n),a=l=>{const c=l.currentTarget;if(!KX(l)||ZO.has(c))return;ZO.add(c);const u=t(l),d=(m,g)=>{window.removeEventListener("pointerup",f),window.removeEventListener("pointercancel",h),!(!KX(m)||!ZO.has(c))&&(ZO.delete(c),typeof u=="function"&&u(m,{success:g}))},f=m=>{d(m,n.useGlobalTarget||gEe(c,m.target))},h=m=>{d(m,!1)};window.addEventListener("pointerup",f,r),window.addEventListener("pointercancel",h,r)};return i.forEach(l=>{!MXe(l)&&l.getAttribute("tabindex")===null&&(l.tabIndex=0),(n.useGlobalTarget?window:l).addEventListener("pointerdown",a,r),l.addEventListener("focus",u=>LXe(u,r),r)}),s}function GX(e,t,n){const{props:i}=e;e.animationState&&i.whileTap&&e.animationState.setActive("whileTap",n==="Start");const r="onTap"+(n==="End"?"":n),s=i[r];s&&gs.postRender(()=>s(t,OC(t)))}class FXe extends Ag{mount(){const{current:t}=this.node;t&&(this.unmount=$Xe(t,n=>(GX(this.node,n,"Start"),(i,{success:r})=>GX(this.node,i,r?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const P$=new WeakMap,$5=new WeakMap,BXe=e=>{const t=P$.get(e.target);t&&t(e)},UXe=e=>{e.forEach(BXe)};function QXe({root:e,...t}){const n=e||document;$5.has(n)||$5.set(n,{});const i=$5.get(n),r=JSON.stringify(t);return i[r]||(i[r]=new IntersectionObserver(UXe,{root:e,...t})),i[r]}function zXe(e,t,n){const i=QXe(t);return P$.set(e,n),i.observe(e),()=>{P$.delete(e),i.unobserve(e)}}const VXe={some:0,all:1};class HXe extends Ag{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:i,amount:r="some",once:s}=t,a={root:n?n.current:void 0,rootMargin:i,threshold:typeof r=="number"?r:VXe[r]},l=c=>{const{isIntersecting:u}=c;if(this.isInView===u||(this.isInView=u,s&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:d,onViewportLeave:f}=this.node.getProps(),h=u?d:f;h&&h(c)};return zXe(this.node.current,a,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(qXe(t,n))&&this.startObserver()}unmount(){}}function qXe({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const WXe={inView:{Feature:HXe},tap:{Feature:FXe},focus:{Feature:PXe},hover:{Feature:IXe}},KXe={layout:{ProjectionNode:pEe,MeasureLayout:oEe}},vN={current:null},bU={current:!1};function bEe(){if(bU.current=!0,!!B7)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>vN.current=e.matches;e.addListener(t),t()}else vN.current=!1}const GXe=[...$Se,sl,ig],XXe=e=>GXe.find(LSe(e)),XX=new WeakMap;function YXe(e,t,n){for(const i in t){const r=t[i],s=n[i];if(ll(r))e.addValue(i,r);else if(ll(s))e.addValue(i,US(r,{owner:e}));else if(s!==r)if(e.hasValue(i)){const a=e.getValue(i);a.liveStyle===!0?a.jump(r):a.hasAnimated||a.set(r)}else{const a=e.getStaticValue(i);e.addValue(i,US(a!==void 0?a:r,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const YX=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class ZXe{scrapeMotionValuesFromProps(t,n,i){return{}}constructor({parent:t,props:n,presenceContext:i,reducedMotionConfig:r,blockInitialAnimation:s,visualState:a},l={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=fU,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const m=Rf.now();this.renderScheduledAtthis.bindToMotionValue(i,n)),bU.current||bEe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:vN.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){XX.delete(this.current),this.projection&&this.projection.unmount(),ng(this.notifyUpdate),ng(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const n=this.features[t];n&&(n.unmount(),n.isMounted=!1)}this.current=null}bindToMotionValue(t,n){this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)();const i=Hy.has(t),r=n.on("change",l=>{this.latestValues[t]=l,this.props.onUpdate&&gs.preRender(this.notifyUpdate),i&&this.projection&&(this.projection.isTransformDirty=!0)}),s=n.on("renderRequest",this.scheduleRender);let a;window.MotionCheckAppearSync&&(a=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{r(),s(),a&&a(),n.owner&&n.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in Hx){const n=Hx[t];if(!n)continue;const{isEnabled:i,Feature:r}=n;if(!this.features[t]&&r&&i(this.props)&&(this.features[t]=new r(this)),this.features[t]){const s=this.features[t];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):lo()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let i=0;in.variantChildren.delete(t)}addValue(t,n){const i=this.values.get(t);n!==i&&(i&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let i=this.values.get(t);return i===void 0&&n!==void 0&&(i=US(n===null?void 0:n,{owner:this}),this.addValue(t,i)),i}readValue(t,n){var i;let r=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(i=this.getBaseTargetFromProps(this.props,t))!==null&&i!==void 0?i:this.readValueFromInstance(this.current,t,this.options);return r!=null&&(typeof r=="string"&&(DSe(r)||CSe(r))?r=parseFloat(r):!XXe(r)&&ig.test(n)&&(r=RSe(t,n)),this.setBaseTarget(t,ll(r)?r.get():r)),ll(r)?r.get():r}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var n;const{initial:i}=this.props;let r;if(typeof i=="string"||typeof i=="object"){const a=q7(this.props,i,(n=this.presenceContext)===null||n===void 0?void 0:n.custom);a&&(r=a[t])}if(i&&r!==void 0)return r;const s=this.getBaseTargetFromProps(this.props,t);return s!==void 0&&!ll(s)?s:this.initialValues[t]!==void 0&&r===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new iU),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class yEe extends ZXe{constructor(){super(...arguments),this.KeyframeResolver=FSe}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){return t.style?t.style[n]:void 0}removeValueFromRenderState(t,{vars:n,style:i}){delete n[t],delete i[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;ll(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}function JXe(e){return window.getComputedStyle(e)}class eYe extends yEe{constructor(){super(...arguments),this.type="html",this.renderInstance=sSe}readValueFromInstance(t,n){if(Hy.has(n)){const i=dU(n);return i&&i.default||0}else{const i=JXe(t),r=(nSe(n)?i.getPropertyValue(n):i[n])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(t,{transformPagePoint:n}){return rEe(t,n)}build(t,n,i){G7(t,n,i.transformTemplate)}scrapeMotionValuesFromProps(t,n,i){return J7(t,n,i)}}class tYe extends yEe{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=lo}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Hy.has(n)){const i=dU(n);return i&&i.default||0}return n=oSe.has(n)?n:z7(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,i){return cSe(t,n,i)}build(t,n,i){X7(t,n,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,i,r){aSe(t,n,i,r)}mount(t){this.isSVGTag=Z7(t.tagName),super.mount(t)}}const nYe=(e,t)=>H7(e)?new tYe(t):new eYe(t,{allowProjection:e!==p.Fragment}),iYe=_We({...xGe,...WXe,...jXe,...KXe},nYe),cr=Vqe(iYe);function BI(){!bU.current&&bEe();const[e]=p.useState(vN.current);return e}function Yo(){return Yo=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||/ServerSideRendering/.test(navigator&&navigator.userAgent)?p.useEffect:p.useLayoutEffect;function ov(e,t,n){var i=p.useRef(t);i.current=t,p.useEffect(function(){function r(s){i.current(s)}return e&&window.addEventListener(e,r,n),function(){e&&window.removeEventListener(e,r)}},[e])}var rYe=["container"];function sYe(e){var t=e.container,n=t===void 0?document.body:t,i=UI(e,rYe);return si.createPortal(yi.createElement("div",Yo({},i)),n)}function oYe(e){return yi.createElement("svg",Yo({width:"44",height:"44",viewBox:"0 0 768 768"},e),yi.createElement("path",{d:"M607.5 205.5l-178.5 178.5 178.5 178.5-45 45-178.5-178.5-178.5 178.5-45-45 178.5-178.5-178.5-178.5 45-45 178.5 178.5 178.5-178.5z"}))}function aYe(e){return yi.createElement("svg",Yo({width:"44",height:"44",viewBox:"0 0 768 768"},e),yi.createElement("path",{d:"M640.5 352.5v63h-390l178.5 180-45 45-256.5-256.5 256.5-256.5 45 45-178.5 180h390z"}))}function lYe(e){return yi.createElement("svg",Yo({width:"44",height:"44",viewBox:"0 0 768 768"},e),yi.createElement("path",{d:"M384 127.5l256.5 256.5-256.5 256.5-45-45 178.5-180h-390v-63h390l-178.5-180z"}))}function cYe(){return p.useEffect(function(){var e=document.body.style,t=e.overflow;return e.overflow="hidden",function(){e.overflow=t}},[]),null}function JX(e){var t=e.touches[0],n=t.clientX,i=t.clientY;if(e.touches.length>=2){var r=e.touches[1],s=r.clientX,a=r.clientY;return[(n+s)/2,(i+a)/2,Math.sqrt(Math.pow(s-n,2)+Math.pow(a-i,2))]}return[n,i,0]}var am=function(e,t,n,i){var r,s=n*t,a=(s-i)/2,l=e;return s<=i?(r=1,l=0):e>0&&a-e<=0?(r=2,l=a):e<0&&a+e<=0&&(r=3,l=-a),[r,l]};function F5(e,t,n,i,r,s,a,l,c,u){a===void 0&&(a=innerWidth/2),l===void 0&&(l=innerHeight/2),c===void 0&&(c=0),u===void 0&&(u=0);var d=am(e,s,n,innerWidth)[0],f=am(t,s,i,innerHeight),h=innerWidth/2,m=innerHeight/2;return{x:a-s/r*(a-(h+e))-h+(i/n>=3&&n*s===innerWidth?0:d?c/2:c),y:l-s/r*(l-(m+t))-m+(f[0]?u/2:u),lastCX:a,lastCY:l}}function L$(e,t,n){var i=e%180!=0;return i?[n,t,i]:[t,n,i]}function B5(e,t,n){var i=L$(n,innerWidth,innerHeight),r=i[0],s=i[1],a=0,l=r,c=s,u=e/t*s,d=t/e*r;return e=s?l=u:e>=r&&tr/s?c=d:t/e>=3&&!i[2]?a=((c=d)-s)/2:l=u,{width:l,height:c,x:0,y:a,pause:!0}}function E2(e,t){var n=t.leading,i=n!==void 0&&n,r=t.maxWait,s=t.wait,a=s===void 0?r||0:s,l=p.useRef(e);l.current=e;var c=p.useRef(0),u=p.useRef(),d=function(){return u.current&&clearTimeout(u.current)},f=p.useCallback(function(){var h=[].slice.call(arguments),m=Date.now();function g(){c.current=m,d(),l.current.apply(null,h)}var b=c.current,v=m-b;if(b===0&&(i&&g(),c.current=m),r!==void 0){if(v>r)return void g()}else v=1&&s&&s())};d()}function d(){c=requestAnimationFrame(u)}}var dYe={T:0,L:0,W:0,H:0,FIT:void 0},xEe=function(){var e=p.useRef(!1);return p.useEffect(function(){return e.current=!0,function(){e.current=!1}},[]),e},fYe=["className"];function hYe(e){var t=e.className,n=t===void 0?"":t,i=UI(e,fYe);return yi.createElement("div",Yo({className:"PhotoView__Spinner "+n},i),yi.createElement("svg",{viewBox:"0 0 32 32",width:"36",height:"36",fill:"white"},yi.createElement("path",{opacity:".25",d:"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"}),yi.createElement("path",{d:"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"})))}var pYe=["src","loaded","broken","className","onPhotoLoad","loadingElement","brokenElement"];function mYe(e){var t=e.src,n=e.loaded,i=e.broken,r=e.className,s=e.onPhotoLoad,a=e.loadingElement,l=e.brokenElement,c=UI(e,pYe),u=xEe();return t&&!i?yi.createElement(yi.Fragment,null,yi.createElement("img",Yo({className:"PhotoView__Photo"+(r?" "+r:""),src:t,onLoad:function(d){var f=d.target;u.current&&s({loaded:!0,naturalWidth:f.naturalWidth,naturalHeight:f.naturalHeight})},onError:function(){u.current&&s({broken:!0})},draggable:!1,alt:""},c)),!n&&(a?yi.createElement("span",{className:"PhotoView__icon"},a):yi.createElement(hYe,{className:"PhotoView__icon"}))):l?yi.createElement("span",{className:"PhotoView__icon"},typeof l=="function"?l({src:t}):l):null}var gYe={naturalWidth:void 0,naturalHeight:void 0,width:void 0,height:void 0,loaded:void 0,broken:!1,x:0,y:0,touched:!1,maskTouched:!1,rotate:0,scale:1,CX:0,CY:0,lastX:0,lastY:0,lastCX:0,lastCY:0,lastScale:1,touchTime:0,touchLength:0,pause:!0,stopRaf:!0,reach:void 0};function bYe(e){var t=e.item,n=t.src,i=t.render,r=t.width,s=r===void 0?0:r,a=t.height,l=a===void 0?0:a,c=t.originRef,u=e.visible,d=e.speed,f=e.easing,h=e.wrapClassName,m=e.className,g=e.style,b=e.loadingElement,v=e.brokenElement,y=e.onPhotoTap,w=e.onMaskTap,x=e.onReachMove,O=e.onReachUp,S=e.onPhotoResize,k=e.isActive,C=e.expose,E=xN(gYe),R=E[0],A=E[1],j=p.useRef(0),T=xEe(),N=R.naturalWidth,_=N===void 0?s:N,D=R.naturalHeight,M=D===void 0?l:D,P=R.width,L=P===void 0?s:P,B=R.height,I=B===void 0?l:B,z=R.loaded,K=z===void 0?!n:z,F=R.broken,q=R.x,H=R.y,X=R.touched,ne=R.stopRaf,Q=R.maskTouched,Z=R.rotate,ce=R.scale,Ee=R.CX,Y=R.CY,G=R.lastX,te=R.lastY,ue=R.lastCX,Ce=R.lastCY,se=R.lastScale,he=R.touchTime,ae=R.touchLength,Ae=R.pause,De=R.reach,ye=ty({onScale:function(Me){return Qe(S2(Me))},onRotate:function(Me){Z!==Me&&(C({rotate:Me}),A(Yo({rotate:Me},B5(_,M,Me))))}});function Qe(Me,bt,jt){ce!==Me&&(C({scale:Me}),A(Yo({scale:Me},F5(q,H,L,I,ce,Me,bt,jt),Me<=1&&{x:0,y:0})))}var we=E2(function(Me,bt,jt){if(jt===void 0&&(jt=0),(X||Q)&&k){var Ct=L$(Z,L,I),sn=Ct[0],We=Ct[1];if(jt===0&&j.current===0){var Le=Math.abs(Me-Ee)<=20,Ge=Math.abs(bt-Y)<=20;if(Le&&Ge)return void A({lastCX:Me,lastCY:bt});j.current=Le?bt>Y?3:2:1}var pt,ot=Me-ue,kt=bt-Ce;if(jt===0){var rt=am(ot+G,ce,sn,innerWidth)[0],qt=am(kt+te,ce,We,innerHeight);pt=function(un,Xe,mt,St){return Xe&&un===1||St==="x"?"x":mt&&un>1||St==="y"?"y":void 0}(j.current,rt,qt[0],De),pt!==void 0&&x(pt,Me,bt,ce)}if(pt==="x"||Q)return void A({reach:"x"});var cn=S2(ce+(jt-ae)/100/2*ce,_/L,.2);C({scale:cn}),A(Yo({touchLength:jt,reach:pt,scale:cn},F5(q,H,L,I,ce,cn,Me,bt,ot,kt)))}},{maxWait:8});function Ne(Me){return!ne&&!X&&(T.current&&A(Yo({},Me,{pause:u})),T.current)}var ie,fe,Se,ke,qe,it,de,ve,Te=(qe=function(Me){return Ne({x:Me})},it=function(Me){return Ne({y:Me})},de=function(Me){return T.current&&(C({scale:Me}),A({scale:Me})),!X&&T.current},ve=ty({X:function(Me){return qe(Me)},Y:function(Me){return it(Me)},S:function(Me){return de(Me)}}),function(Me,bt,jt,Ct,sn,We,Le,Ge,pt,ot,kt){var rt=L$(ot,sn,We),qt=rt[0],cn=rt[1],un=am(Me,Ge,qt,innerWidth),Xe=un[0],mt=un[1],St=am(bt,Ge,cn,innerHeight),on=St[0],zt=St[1],Be=Date.now()-kt;if(Be>=200||Ge!==Le||Math.abs(pt-Le)>1){var at=F5(Me,bt,sn,We,Le,Ge),On=at.x,Je=at.y,yt=Xe?mt:On!==Me?On:null,Bn=on?zt:Je!==bt?Je:null;return yt!==null&&Cb(Me,yt,ve.X),Bn!==null&&Cb(bt,Bn,ve.Y),void(Ge!==Le&&Cb(Le,Ge,ve.S))}var Vt=(Me-jt)/Be,Wn=(bt-Ct)/Be,_n=Math.sqrt(Math.pow(Vt,2)+Math.pow(Wn,2)),ei=!1,Sn=!1;(function(Vn,Cn){var Kn,vr=Vn,xr=0,er=0,He=function(Gn){Kn||(Kn=Gn);var Cr=Gn-Kn,ys=Math.sign(Vn),is=-.001*ys,Tr=Math.sign(-vr)*Math.pow(vr,2)*2e-4,Xn=vr*Cr+(is+Tr)*Math.pow(Cr,2)/2;xr+=Xn,Kn=Gn,ys*(vr+=(is+Tr)*Cr)<=0?tn():Cn(xr)?wt():tn()};function wt(){er=requestAnimationFrame(He)}function tn(){cancelAnimationFrame(er)}wt()})(_n,function(Vn){var Cn=Me+Vn*(Vt/_n),Kn=bt+Vn*(Wn/_n),vr=am(Cn,Le,qt,innerWidth),xr=vr[0],er=vr[1],He=am(Kn,Le,cn,innerHeight),wt=He[0],tn=He[1];if(xr&&!ei&&(ei=!0,Xe?Cb(Cn,er,ve.X):eY(er,Cn+(Cn-er),ve.X)),wt&&!Sn&&(Sn=!0,on?Cb(Kn,tn,ve.Y):eY(tn,Kn+(Kn-tn),ve.Y)),ei&&Sn)return!1;var Gn=ei||ve.X(er),Cr=Sn||ve.Y(tn);return Gn&&Cr})}),Ke=(ie=y,fe=function(Me,bt){De||Qe(ce!==1?1:Math.max(2,_/L),Me,bt)},Se=p.useRef(0),ke=E2(function(){Se.current=0,ie.apply(void 0,[].slice.call(arguments))},{wait:300}),function(){var Me=[].slice.call(arguments);Se.current+=1,ke.apply(void 0,Me),Se.current>=2&&(ke.cancel(),Se.current=0,fe.apply(void 0,Me))});function $e(Me,bt){if(j.current=0,(X||Q)&&k){A({touched:!1,maskTouched:!1,pause:!1,stopRaf:!1,reach:void 0});var jt=S2(ce,_/L);if(Te(q,H,G,te,L,I,ce,jt,se,Z,he),O(Me,bt),Ee===Me&&Y===bt){if(X)return void Ke(Me,bt);Q&&w(Me,bt)}}}function At(Me,bt,jt){jt===void 0&&(jt=0),A({touched:!0,CX:Me,CY:bt,lastCX:Me,lastCY:bt,lastX:q,lastY:H,lastScale:ce,touchLength:jt,touchTime:Date.now()})}function Nt(Me){A({maskTouched:!0,CX:Me.clientX,CY:Me.clientY,lastX:q,lastY:H})}ov(mh?void 0:"mousemove",function(Me){Me.preventDefault(),we(Me.clientX,Me.clientY)}),ov(mh?void 0:"mouseup",function(Me){$e(Me.clientX,Me.clientY)}),ov(mh?"touchmove":void 0,function(Me){Me.preventDefault();var bt=JX(Me);we.apply(void 0,bt)},{passive:!1}),ov(mh?"touchend":void 0,function(Me){var bt=Me.changedTouches[0];$e(bt.clientX,bt.clientY)},{passive:!1}),ov("resize",E2(function(){K&&!X&&(A(B5(_,M,Z)),S())},{maxWait:8})),M$(function(){k&&C(Yo({scale:ce,rotate:Z},ye))},[k]);var vt=function(Me,bt,jt,Ct,sn,We,Le,Ge,pt,ot){var kt=function(On,Je,yt,Bn,Vt){var Wn=p.useRef(!1),_n=xN({lead:!0,scale:yt}),ei=_n[0],Sn=ei.lead,Vn=ei.scale,Cn=_n[1],Kn=E2(function(vr){try{return Vt(!0),Cn({lead:!1,scale:vr}),Promise.resolve()}catch(xr){return Promise.reject(xr)}},{wait:Bn});return M$(function(){Wn.current?(Vt(!1),Cn({lead:!0}),Kn(yt)):Wn.current=!0},[yt]),Sn?[On*Vn,Je*Vn,yt/Vn]:[On*yt,Je*yt,1]}(We,Le,Ge,pt,ot),rt=kt[0],qt=kt[1],cn=kt[2],un=function(On,Je,yt,Bn,Vt){var Wn=p.useState(dYe),_n=Wn[0],ei=Wn[1],Sn=p.useState(0),Vn=Sn[0],Cn=Sn[1],Kn=p.useRef(),vr=ty({OK:function(){return On&&Cn(4)}});function xr(er){Vt(!1),Cn(er)}return p.useEffect(function(){if(Kn.current||(Kn.current=Date.now()),yt){if(function(er,He){var wt=er&&er.current;if(wt&&wt.nodeType===1){var tn=wt.getBoundingClientRect();He({T:tn.top,L:tn.left,W:tn.width,H:tn.height,FIT:wt.tagName==="IMG"?getComputedStyle(wt).objectFit:void 0})}}(Je,ei),On)return Date.now()-Kn.current<250?(Cn(1),requestAnimationFrame(function(){Cn(2),requestAnimationFrame(function(){return xr(3)})}),void setTimeout(vr.OK,Bn)):void Cn(4);xr(5)}},[On,yt]),[Vn,_n]}(Me,bt,jt,pt,ot),Xe=un[0],mt=un[1],St=mt.W,on=mt.FIT,zt=innerWidth/2,Be=innerHeight/2,at=Xe<3||Xe>4;return[at?St?mt.L:zt:Ct+(zt-We*Ge/2),at?St?mt.T:Be:sn+(Be-Le*Ge/2),rt,at&&on?rt*(mt.H/St):qt,Xe===0?cn:at?St/(We*Ge)||.01:cn,at?on?1:0:1,Xe,on]}(u,c,K,q,H,L,I,ce,d,function(Me){return A({pause:Me})}),Ot=vt[4],Tt=vt[6],ft="transform "+d+"ms "+f,gt={className:m,onMouseDown:mh?void 0:function(Me){Me.stopPropagation(),Me.button===0&&At(Me.clientX,Me.clientY,0)},onTouchStart:mh?function(Me){Me.stopPropagation(),At.apply(void 0,JX(Me))}:void 0,onWheel:function(Me){if(!De){var bt=S2(ce-Me.deltaY/100/2,_/L);A({stopRaf:!0}),Qe(bt,Me.clientX,Me.clientY)}},style:{width:vt[2]+"px",height:vt[3]+"px",opacity:vt[5],objectFit:Tt===4?void 0:vt[7],transform:Z?"rotate("+Z+"deg)":void 0,transition:Tt>2?ft+", opacity "+d+"ms ease, height "+(Tt<4?d/2:Tt>4?d:0)+"ms "+f:void 0}};return yi.createElement("div",{className:"PhotoView__PhotoWrap"+(h?" "+h:""),style:g,onMouseDown:!mh&&k?Nt:void 0,onTouchStart:mh&&k?function(Me){return Nt(Me.touches[0])}:void 0},yi.createElement("div",{className:"PhotoView__PhotoBox",style:{transform:"matrix("+Ot+", 0, 0, "+Ot+", "+vt[0]+", "+vt[1]+")",transition:X||Ae?void 0:ft,willChange:k?"transform":void 0}},n?yi.createElement(mYe,Yo({src:n,loaded:K,broken:F},gt,{onPhotoLoad:function(Me){A(Yo({},Me,Me.loaded&&B5(Me.naturalWidth||0,Me.naturalHeight||0,Z)))},loadingElement:b,brokenElement:v})):i&&i({attrs:gt,scale:Ot,rotate:Z})))}var tY={x:0,touched:!1,pause:!1,lastCX:void 0,lastCY:void 0,bg:void 0,lastBg:void 0,overlay:!0,minimal:!0,scale:1,rotate:0};function yYe(e){var t=e.loop,n=t===void 0?3:t,i=e.speed,r=e.easing,s=e.photoClosable,a=e.maskClosable,l=a===void 0||a,c=e.maskOpacity,u=c===void 0?1:c,d=e.pullClosable,f=d===void 0||d,h=e.bannerVisible,m=h===void 0||h,g=e.overlayRender,b=e.toolbarRender,v=e.className,y=e.maskClassName,w=e.photoClassName,x=e.photoWrapClassName,O=e.loadingElement,S=e.brokenElement,k=e.images,C=e.index,E=C===void 0?0:C,R=e.onIndexChange,A=e.visible,j=e.onClose,T=e.afterClose,N=e.portalContainer,_=xN(tY),D=_[0],M=_[1],P=p.useState(0),L=P[0],B=P[1],I=D.x,z=D.touched,K=D.pause,F=D.lastCX,q=D.lastCY,H=D.bg,X=H===void 0?u:H,ne=D.lastBg,Q=D.overlay,Z=D.minimal,ce=D.scale,Ee=D.rotate,Y=D.onScale,G=D.onRotate,te=e.hasOwnProperty("index"),ue=te?E:L,Ce=te?R:B,se=p.useRef(ue),he=k.length,ae=k[ue],Ae=typeof n=="boolean"?n:he>n,De=function(Ot,Tt){var ft=p.useReducer(function(jt){return!jt},!1)[1],gt=p.useRef(0),Me=function(jt){var Ct=p.useRef(jt);function sn(We){Ct.current=We}return p.useMemo(function(){(function(We){Ot?(We(Ot),gt.current=1):gt.current=2})(sn)},[jt]),[Ct.current,sn]}(Ot),bt=Me[1];return[Me[0],gt.current,function(){ft(),gt.current===2&&(bt(!1),Tt&&Tt()),gt.current=0}]}(A,T),ye=De[0],Qe=De[1],we=De[2];M$(function(){if(ye)return M({pause:!0,x:ue*-(innerWidth+P0)}),void(se.current=ue);M(tY)},[ye]);var Ne=ty({close:function(Ot){G&&G(0),M({overlay:!0,lastBg:X}),j(Ot)},changeIndex:function(Ot,Tt){Tt===void 0&&(Tt=!1);var ft=Ae?se.current+(Ot-ue):Ot,gt=he-1,Me=D$(ft,0,gt),bt=Ae?ft:Me,jt=innerWidth+P0;M({touched:!1,lastCX:void 0,lastCY:void 0,x:-jt*bt,pause:Tt}),se.current=bt,Ce&&Ce(Ae?Ot<0?gt:Ot>gt?0:Ot:Me)}}),ie=Ne.close,fe=Ne.changeIndex;function Se(Ot){return Ot?ie():M({overlay:!Q})}function ke(){M({x:-(innerWidth+P0)*ue,lastCX:void 0,lastCY:void 0,pause:!0}),se.current=ue}function qe(Ot,Tt,ft,gt){Ot==="x"?function(Me){if(F!==void 0){var bt=Me-F,jt=bt;!Ae&&(ue===0&&bt>0||ue===he-1&&bt<0)&&(jt=bt/2),M({touched:!0,lastCX:F,x:-(innerWidth+P0)*se.current+jt,pause:!1})}else M({touched:!0,lastCX:Me,x:I,pause:!1})}(Tt):Ot==="y"&&function(Me,bt){if(q!==void 0){var jt=u===null?null:D$(u,.01,u-Math.abs(Me-q)/100/4);M({touched:!0,lastCY:q,bg:bt===1?jt:u,minimal:bt===1})}else M({touched:!0,lastCY:Me,bg:X,minimal:!0})}(ft,gt)}function it(Ot,Tt){var ft=Ot-(F??Ot),gt=Tt-(q??Tt),Me=!1;if(ft<-40)fe(ue+1);else if(ft>40)fe(ue-1);else{var bt=-(innerWidth+P0)*se.current;Math.abs(gt)>100&&Z&&f&&(Me=!0,ie()),M({touched:!1,x:bt,lastCX:void 0,lastCY:void 0,bg:u,overlay:!!Me||Q})}}ov("keydown",function(Ot){if(A)switch(Ot.key){case"ArrowLeft":fe(ue-1,!0);break;case"ArrowRight":fe(ue+1,!0);break;case"Escape":ie()}});var de=function(Ot,Tt,ft){return p.useMemo(function(){var gt=Ot.length;return ft?Ot.concat(Ot).concat(Ot).slice(gt+Tt-1,gt+Tt+2):Ot.slice(Math.max(Tt-1,0),Math.min(Tt+2,gt+1))},[Ot,Tt,ft])}(k,ue,Ae);if(!ye)return null;var ve=Q&&!Qe,Te=A?X:ne,Ke=Y&&G&&{images:k,index:ue,visible:A,onClose:ie,onIndexChange:fe,overlayVisible:ve,overlay:ae&&ae.overlay,scale:ce,rotate:Ee,onScale:Y,onRotate:G},$e=i?i(Qe):400,At=r?r(Qe):ZX,Nt=i?i(3):600,vt=r?r(3):ZX;return yi.createElement(sYe,{className:"PhotoView-Portal"+(ve?"":" PhotoView-Slider__clean")+(A?"":" PhotoView-Slider__willClose")+(v?" "+v:""),role:"dialog",onClick:function(Ot){return Ot.stopPropagation()},container:N},A&&yi.createElement(cYe,null),yi.createElement("div",{className:"PhotoView-Slider__Backdrop"+(y?" "+y:"")+(Qe===1?" PhotoView-Slider__fadeIn":Qe===2?" PhotoView-Slider__fadeOut":""),style:{background:Te?"rgba(0, 0, 0, "+Te+")":void 0,transitionTimingFunction:At,transitionDuration:(z?0:$e)+"ms",animationDuration:$e+"ms"},onAnimationEnd:we}),m&&yi.createElement("div",{className:"PhotoView-Slider__BannerWrap"},yi.createElement("div",{className:"PhotoView-Slider__Counter"},ue+1," / ",he),yi.createElement("div",{className:"PhotoView-Slider__BannerRight"},b&&Ke&&b(Ke),yi.createElement(oYe,{className:"PhotoView-Slider__toolbarIcon",onClick:ie}))),de.map(function(Ot,Tt){var ft=Ae||ue!==0?se.current-1+Tt:ue+Tt;return yi.createElement(bYe,{key:Ae?Ot.key+"/"+Ot.src+"/"+ft:Ot.key,item:Ot,speed:$e,easing:At,visible:A,onReachMove:qe,onReachUp:it,onPhotoTap:function(){return Se(s)},onMaskTap:function(){return Se(l)},wrapClassName:x,className:w,style:{left:(innerWidth+P0)*ft+"px",transform:"translate3d("+I+"px, 0px, 0)",transition:z||K?void 0:"transform "+Nt+"ms "+vt},loadingElement:O,brokenElement:S,onPhotoResize:ke,isActive:se.current===ft,expose:M})}),!mh&&m&&yi.createElement(yi.Fragment,null,(Ae||ue!==0)&&yi.createElement("div",{className:"PhotoView-Slider__ArrowLeft",onClick:function(){return fe(ue-1,!0)}},yi.createElement(aYe,null)),(Ae||ue+1-1){var y=u.slice();return y.splice(v,1,b),void l({images:y})}l(function(w){return{images:w.images.concat(b)}})},remove:function(b){l(function(v){var y=v.images.filter(function(w){return w.key!==b});return{images:y,index:Math.min(y.length-1,f)}})},show:function(b){var v=u.findIndex(function(y){return y.key===b});l({visible:!0,index:v}),i&&i(!0,v,a)}}),m=ty({close:function(){l({visible:!1}),i&&i(!1,f,a)},changeIndex:function(b){l({index:b}),n&&n(b,a)}}),g=p.useMemo(function(){return Yo({},a,h)},[a,h]);return yi.createElement(vEe.Provider,{value:g},t,yi.createElement(yYe,Yo({images:u,visible:d,index:f,onIndexChange:m.changeIndex,onClose:m.close},r)))}var wEe=function(e){var t,n,i=e.src,r=e.render,s=e.overlay,a=e.width,l=e.height,c=e.triggers,u=c===void 0?["onClick"]:c,d=e.children,f=p.useContext(vEe),h=(t=function(){return f.nextId()},(n=p.useRef({sign:!1,fn:void 0}).current).sign||(n.sign=!0,n.fn=t()),n.fn),m=p.useRef(null);p.useImperativeHandle(d==null?void 0:d.ref,function(){return m.current}),p.useEffect(function(){return function(){f.remove(h)}},[]);var g=ty({render:function(v){return r&&r(v)},show:function(v,y){f.show(h),function(w,x){if(d){var O=d.props[w];O&&O(x)}}(v,y)}}),b=p.useMemo(function(){var v={};return u.forEach(function(y){v[y]=g.show.bind(null,y)}),v},[]);return p.useEffect(function(){f.update({key:h,src:i,originRef:m,render:g.render,overlay:s,width:a,height:l})},[i]),d?p.Children.only(p.cloneElement(d,Yo({},b,{ref:m}))):null};function my(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"4.5",width:"17",height:"15",rx:"2.5"}),o.jsx("path",{d:"m7.5 9 2.7 2.5L7.5 14M12.7 14h3.8"}),o.jsx("path",{d:"M3.8 7.5h16.4",opacity:".55"})]})}function OEe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"4.5",width:"17",height:"15",rx:"2.5"}),o.jsx("path",{d:"M3.8 8h16.4"}),o.jsx("circle",{cx:"6.5",cy:"6.3",r:".65",fill:"currentColor",stroke:"none"}),o.jsx("circle",{cx:"8.8",cy:"6.3",r:".65",fill:"currentColor",stroke:"none"}),o.jsx("path",{d:"m9 15 2.2-4 1.6 2.4 1.1-1.2L16 15H9Z"})]})}function yU(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M12 3.4 19 6v5.3c0 4.3-2.7 7.6-7 9.3-4.3-1.7-7-5-7-9.3V6l7-2.6Z"}),o.jsx("path",{d:"m8.8 12 2 2 4.4-4.4"})]})}function P_(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M3.5 7.7h6.1l1.7 2h9.2v7.5a2.3 2.3 0 0 1-2.3 2.3H5.8a2.3 2.3 0 0 1-2.3-2.3V7.7Z"}),o.jsx("path",{d:"M3.8 7.7V6.8a2.3 2.3 0 0 1 2.3-2.3h3l1.8 2h6.9a2.3 2.3 0 0 1 2.3 2.3v.9"}),o.jsx("path",{d:"M12 13v3M10.5 14.5h3"})]})}function OYe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"M12 5v14M5 12h14"})})}function nY(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m6.5 11.5 5.5-5.5 5.5 5.5M12 6v12"})})}function iY(e){return o.jsx("svg",{viewBox:"0 0 24 24","aria-hidden":"true",...e,children:o.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"1.75",fill:"currentColor"})})}function kYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"4.5",width:"17",height:"15",rx:"2.5"}),o.jsx("circle",{cx:"8.5",cy:"9",r:"1.4"}),o.jsx("path",{d:"m5.5 17 4.2-4.2 2.6 2.4 2.1-2.1 4.1 3.9"})]})}function SYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M6 3.5h7l5 5v12H6z"}),o.jsx("path",{d:"M13 3.5v5h5M9 13h6M9 16h5"})]})}function EYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"3.5",y:"5",width:"13.5",height:"14",rx:"2.5"}),o.jsx("path",{d:"m17 10 3.5-2v8L17 14zM7 8.5h4.5"})]})}function CYe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m12 3 1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5zM18.5 15.5l.7 2.1 2.1.7-2.1.7-.7 2.1-.7-2.1-2.1-.7 2.1-.7z"})})}function kEe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m6.5 6.5 11 11M17.5 6.5l-11 11"})})}function $$(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m9 6 6 6-6 6"})})}function TYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("path",{d:"M4.8 8.2A8 8 0 1 1 4 12M4.8 8.2V4.5M4.8 8.2h3.7"}),o.jsx("path",{d:"M12 8v4.5l3 1.8"})]})}function nc(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"M20 12a8 8 0 1 1-2.35-5.65"})})}function AYe(e){return o.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:[o.jsx("rect",{x:"8",y:"8",width:"11",height:"11",rx:"2"}),o.jsx("path",{d:"M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"})]})}function SEe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m5 12.5 4.2 4.2L19 7"})})}function V(e,t={}){return hn.t(e,{...t,ns:"adk"})}function Ll(e){const t=new Headers(e);return t.has("Accept-Language")||t.set("Accept-Language",hn.resolvedLanguage||hn.language),t}function F$(){return hn.resolvedLanguage||hn.language}const rY="veadk_auth_qs",_Ye=new Set(["view","source","sessionId","artifactSha256","validationReportSha256","projectId","versionId"]);let iO=null;function jYe(){if(iO!==null)return iO;const e=new URLSearchParams(window.location.search),t=new URLSearchParams,n=new URLSearchParams,i=e.get("view")==="runtime-deploy"&&e.get("source")==="intelligent-development";e.forEach((s,a)=>{(i&&_Ye.has(a)?n:t).append(a,s)});const r=t.toString();if(r?(sessionStorage.setItem(rY,r),iO=r):iO=sessionStorage.getItem(rY)??"",r){const s=n.toString();window.history.replaceState(null,"",window.location.pathname+(s?`?${s}`:"")+window.location.hash)}return iO}function ta(e){const t=jYe();if(!t)return e;const n=new URL(e,window.location.origin);return new URLSearchParams(t).forEach((i,r)=>{n.searchParams.has(r)||n.searchParams.set(r,i)}),/^https?:\/\//i.test(e)?n.toString():n.pathname+n.search+n.hash}const qa=3e4,hr=12e4,vU=1e4;function Wa(e,t=qa){if(t<=0)return e??void 0;const n=AbortSignal.timeout(t);return e?AbortSignal.any([e,n]):n}const wN="veadk_local_user",ON="veadk_local_user_tab",NYe="X-VeADK-OAuth-Refresh-Retry",RYe=[50,250],IYe=/^[A-Za-z0-9]{1,16}$/;function EEe(){try{const e=sessionStorage.getItem(ON);if(e)return e;const t=localStorage.getItem(wN);return t&&sessionStorage.setItem(ON,t),t}catch{try{return localStorage.getItem(wN)}catch{return null}}}function sY(e){try{sessionStorage.setItem(ON,e)}catch{}try{localStorage.setItem(wN,e)}catch{}}function PYe(){try{sessionStorage.removeItem(ON)}catch{}try{localStorage.removeItem(wN)}catch{}}function pu(e){const t=new Headers(e),n=EEe();return n&&t.set("X-VeADK-Local-User",n),t}async function CEe(){let e;try{e=await fetch("/web/auth-config",{headers:Ll({Accept:"application/json"}),signal:Wa(void 0,vU)})}catch(t){throw console.warn("[identity] /web/auth-config is unreachable:",t),new Error(V("identity.loadConfigNetworkFailed"))}if(!e.ok)throw new Error(V("identity.configServiceFailed",{status:e.status}));try{const t=await e.json();if(!Array.isArray(t.providers))throw new TypeError("providers is not an array");return t.providers}catch(t){throw console.warn("[identity] /web/auth-config returned an invalid response:",t),new Error(V("identity.invalidConfigResponse"))}}function DYe(e){const t=window.location.pathname+window.location.search+window.location.hash,n=e.includes("?")?"&":"?";window.location.assign(`${e}${n}redirect=${encodeURIComponent(t)}`)}function MYe(){const e=window.location.pathname+window.location.search+window.location.hash,t=window.open("about:blank","_blank","popup,width=520,height=720");if(!t)return null;try{t.opener=null,t.location.replace(`/oauth2/login?redirect=${encodeURIComponent(e)}`)}catch{return t.close(),null}return t}async function LYe(){const[e,t]=await Promise.all([B$(),CEe()]);return e.status==="unauthenticated"&&t.length>0}function $Ye(){window.location.assign("/oauth2/logout")}async function FYe(){for(let e=0;;e+=1){let t;try{t=await fetch("/oauth2/userinfo",{headers:Ll({Accept:"application/json"}),signal:Wa(void 0,vU)})}catch(i){throw console.warn("[identity] /oauth2/userinfo is unreachable:",i),new Error(V("identity.serviceNetworkFailed"))}const n=RYe[e];if(t.status!==401||t.headers.get(NYe)!=="1"||n===void 0)return t;await new Promise(i=>window.setTimeout(i,n))}}async function B$(){const e=await FYe();if(e.ok){let n;try{n=await e.json()}catch(r){throw console.warn("[identity] /oauth2/userinfo returned a non-JSON response:",r),new Error(V("identity.invalidServiceResponse"))}return{status:"authenticated",userId:String(n.sub??n.user_id??n.email??""),info:n}}if(e.status===401)return{status:"unauthenticated",userId:"",local:!1};if(e.status!==404)throw new Error(V("identity.serviceFailed",{status:e.status}));const t=EEe();return t?{status:"authenticated",userId:t,info:{name:t},local:!0}:{status:"unauthenticated",userId:"",local:!0}}function BYe(e){if(!e)return"";for(const t of[e.name,e.preferred_username,e.username,e.email])if(typeof t=="string"&&t.trim())return t.trim();return""}function UYe(e){const t=e==null?void 0:e.picture;return typeof t=="string"?t.trim():""}const U$="veadk:authentication-required";let Uk=null,JO=null;function QYe(e){if(!e.redirected||!e.url)return!1;try{const t=new URL(e.url);return t.pathname.includes("/authorize")||t.pathname.includes("/oauth2/login")||t.hostname.includes(".userpool.auth.")}catch{return!1}}function zYe(e){Uk||(Uk=new Promise(n=>{JO=n}),window.dispatchEvent(new Event(U$)));const t=Uk;return e?e.aborted?Promise.reject(e.reason??new Error("Request aborted")):new Promise((n,i)=>{const r=()=>i(e.reason??new Error("Request aborted"));e.addEventListener("abort",r,{once:!0}),t.then(()=>{e.removeEventListener("abort",r),n()},s=>{e.removeEventListener("abort",r),i(s)})}):t}function VYe(){return Uk!==null}function HYe(){JO==null||JO(),JO=null,Uk=null}async function QI(e,t){var i;const n=await e.text().catch(()=>"");try{return JSON.parse(n)}catch{const r=((i=e.headers.get("content-type"))==null?void 0:i.split(";",1)[0])||V("common.contentTypeMissing"),s=n.trim().slice(0,2e3),a=s?`
+${V("common.response",{response:s})}`:"";throw new Error(V("jsonResponse.nonJson",{fallback:t,status:e.status,contentType:r,detail:a}))}}const qYe=/\brun_sse\s*failed\s*:\s*404\b/i,WYe=/session not found/i,KYe=/(?:^|[::\s])not found\s*$/i,GYe=/Expecting (?:'[^']+'|\w+)(?: delimiter)?: line \d+ column \d+ \(char \d+\)/i,XYe=/Unknown or expired collection_id\s+'[^']+'\.\s*Call collect_resources first\./i,YYe=/(?:RateLimitError|\bTPM\b|\bRPM\b|tokens? per minute|requests? per minute)[\s\S]*(?:\b429\b|limit|quota)|\b429\b[\s\S]*(?:model|RateLimitError|\bTPM\b|\bRPM\b)/i;function D0(e,t){return e.includes(t)?e:`${e}
-${t}`}function lm(e){const t=String(e),n=V("runSse.rawResponseLabel");let i=t.includes(n)?t:`${n}${t}`;if(XYe.test(t))i=D0(i,V("runSse.toolArgumentHint"));else{if(YYe.test(t))return D0(i,V("runSse.resourceCollectionExpiredHint"));if(ZYe.test(t))return D0(i,V("runSse.modelQuotaHint"));WYe.test(t)&&(KYe.test(t)?i=D0(i,V("runSse.persistentMemoryHint")):GYe.test(t)&&(i=D0(i,V("runSse.unsupportedRouteHint"))))}return D0(i,V("runSse.networkConfigurationHint"))}async function*zI(e){if(!e.body)throw new Error("Response has no body");const t=e.body.getReader(),n=new TextDecoder;let i="";const r=a=>a.length>500?V("sse.truncatedData",{data:a.slice(0,500),count:a.length}):a,s=(a,l=!1)=>{const c=a.split(/\r?\n/).filter(u=>u.startsWith("data:")).map(u=>u.slice(5).trimStart()).join(`
-`);if(!(!c||c==="[DONE]"||c==="ping"))try{return JSON.parse(c)}catch{const u=r(c);throw l?new Error(V("sse.incompleteEvent",{data:u})):new Error(V("sse.invalidEventJson",{data:u}))}};try{for(;;){const{done:a,value:l}=await t.read();if(a)break;i+=n.decode(l,{stream:!0});let c=i.match(/\r?\n\r?\n/);for(;(c==null?void 0:c.index)!==void 0;){const u=i.slice(0,c.index);i=i.slice(c.index+c[0].length);const d=s(u);d!==void 0&&(yield d),c=i.match(/\r?\n\r?\n/)}}if(i+=n.decode(),i.trim()){const a=s(i,!0);a!==void 0&&(yield a)}}finally{try{await t.cancel()}catch{}finally{t.releaseLock()}}}const JYe="X-Studio-FaaS-Instance",eZe="X-Studio-FaaS-Request-Id";function tZe(e,t,n){var s,a;const i=((s=e.headers.get(JYe))==null?void 0:s.trim())??"";if(!t||!n||!i)return null;const r=((a=e.headers.get(eZe))==null?void 0:a.trim())??"";return{runtimeId:t,region:n,instanceName:i,...r?{requestId:r}:{}}}function aY(e,t,n,i){const r=e==="byteplus"?"https://console.byteplus.com":"https://console.volcengine.com",s=new URLSearchParams({projectName:"default",runtimeId:n,instanceName:i});return`${r}/agentkit/region:agentkit+${encodeURIComponent(t)}/runtime?${s}`}function nZe(e){return/\b(?:ERROR|FATAL|CRITICAL)\b/i.test(e)?"error":/\bWARN(?:ING)?\b/i.test(e)?"warning":/\bDEBUG\b/i.test(e)?"debug":/\bINFO\b/i.test(e)?"info":"default"}function iZe(e){if(!e||typeof e!="object")return!1;const t=e;return t.type==="done"?!0:t.type==="context"?typeof t.instanceName=="string"&&typeof t.consoleUrl=="string":t.type==="logs"?typeof t.text=="string"&&typeof t.updatedAt=="number":t.type==="error"?typeof t.message=="string"&&(t.detail===void 0||typeof t.detail=="string")&&(t.statusCode===void 0||typeof t.statusCode=="string")&&(t.errorCode===void 0||typeof t.errorCode=="string")&&(t.requestId===void 0||typeof t.requestId=="string")&&(t.responseBody===void 0||typeof t.responseBody=="string"):!1}function AEe(e){var i;const t=[e.message],n=[e.statusCode?V("runtimeLogs.httpStatus",{status:e.statusCode}):"",e.errorCode?V("runtimeLogs.errorCode",{code:e.errorCode}):"",e.requestId?`Request ID:${e.requestId}`:""].filter(Boolean);return n.length>0&&t.push(n.join(`
+${t}`}function lm(e){const t=String(e),n=V("runSse.rawResponseLabel");let i=t.includes(n)?t:`${n}${t}`;if(GYe.test(t))i=D0(i,V("runSse.toolArgumentHint"));else{if(XYe.test(t))return D0(i,V("runSse.resourceCollectionExpiredHint"));if(YYe.test(t))return D0(i,V("runSse.modelQuotaHint"));qYe.test(t)&&(WYe.test(t)?i=D0(i,V("runSse.persistentMemoryHint")):KYe.test(t)&&(i=D0(i,V("runSse.unsupportedRouteHint"))))}return D0(i,V("runSse.networkConfigurationHint"))}async function*zI(e){if(!e.body)throw new Error("Response has no body");const t=e.body.getReader(),n=new TextDecoder;let i="";const r=a=>a.length>500?V("sse.truncatedData",{data:a.slice(0,500),count:a.length}):a,s=(a,l=!1)=>{const c=a.split(/\r?\n/).filter(u=>u.startsWith("data:")).map(u=>u.slice(5).trimStart()).join(`
+`);if(!(!c||c==="[DONE]"||c==="ping"))try{return JSON.parse(c)}catch{const u=r(c);throw l?new Error(V("sse.incompleteEvent",{data:u})):new Error(V("sse.invalidEventJson",{data:u}))}};try{for(;;){const{done:a,value:l}=await t.read();if(a)break;i+=n.decode(l,{stream:!0});let c=i.match(/\r?\n\r?\n/);for(;(c==null?void 0:c.index)!==void 0;){const u=i.slice(0,c.index);i=i.slice(c.index+c[0].length);const d=s(u);d!==void 0&&(yield d),c=i.match(/\r?\n\r?\n/)}}if(i+=n.decode(),i.trim()){const a=s(i,!0);a!==void 0&&(yield a)}}finally{try{await t.cancel()}catch{}finally{t.releaseLock()}}}const ZYe="X-Studio-FaaS-Instance",JYe="X-Studio-FaaS-Request-Id";function eZe(e,t,n){var s,a;const i=((s=e.headers.get(ZYe))==null?void 0:s.trim())??"";if(!t||!n||!i)return null;const r=((a=e.headers.get(JYe))==null?void 0:a.trim())??"";return{runtimeId:t,region:n,instanceName:i,...r?{requestId:r}:{}}}function oY(e,t,n,i){const r=e==="byteplus"?"https://console.byteplus.com":"https://console.volcengine.com",s=new URLSearchParams({projectName:"default",runtimeId:n,instanceName:i});return`${r}/agentkit/region:agentkit+${encodeURIComponent(t)}/runtime?${s}`}function tZe(e){return/\b(?:ERROR|FATAL|CRITICAL)\b/i.test(e)?"error":/\bWARN(?:ING)?\b/i.test(e)?"warning":/\bDEBUG\b/i.test(e)?"debug":/\bINFO\b/i.test(e)?"info":"default"}function nZe(e){if(!e||typeof e!="object")return!1;const t=e;return t.type==="done"?!0:t.type==="context"?typeof t.instanceName=="string"&&typeof t.consoleUrl=="string":t.type==="logs"?typeof t.text=="string"&&typeof t.updatedAt=="number":t.type==="error"?typeof t.message=="string"&&(t.detail===void 0||typeof t.detail=="string")&&(t.statusCode===void 0||typeof t.statusCode=="string")&&(t.errorCode===void 0||typeof t.errorCode=="string")&&(t.requestId===void 0||typeof t.requestId=="string")&&(t.responseBody===void 0||typeof t.responseBody=="string"):!1}function TEe(e){var i;const t=[e.message],n=[e.statusCode?V("runtimeLogs.httpStatus",{status:e.statusCode}):"",e.errorCode?V("runtimeLogs.errorCode",{code:e.errorCode}):"",e.requestId?`Request ID:${e.requestId}`:""].filter(Boolean);return n.length>0&&t.push(n.join(`
`)),e.detail&&e.detail!==e.message&&t.push(e.detail),e.responseBody&&!((i=e.detail)!=null&&i.includes(e.responseBody))&&t.push(V("runtimeLogs.cloudResponseBody",{body:e.responseBody})),t.join(`
-`)}async function rZe(e){const t=`HTTP ${e.status}${e.statusText?` ${e.statusText}`:""}`,n=await e.text();if(!n)return t;try{const i=JSON.parse(n);if(typeof i.detail=="string"&&i.detail)return`${t}
+`)}async function iZe(e){const t=`HTTP ${e.status}${e.statusText?` ${e.statusText}`:""}`,n=await e.text();if(!n)return t;try{const i=JSON.parse(n);if(typeof i.detail=="string"&&i.detail)return`${t}
-${i.detail}`;if(i.detail&&typeof i.detail=="object"){const r=i.detail;if(typeof r.message=="string")return AEe({message:r.message,...typeof r.detail=="string"?{detail:r.detail}:{},...typeof r.statusCode=="string"?{statusCode:r.statusCode}:{},...typeof r.errorCode=="string"?{errorCode:r.errorCode}:{},...typeof r.requestId=="string"?{requestId:r.requestId}:{},...typeof r.responseBody=="string"?{responseBody:r.responseBody}:{}})}return`${t}
+${i.detail}`;if(i.detail&&typeof i.detail=="object"){const r=i.detail;if(typeof r.message=="string")return TEe({message:r.message,...typeof r.detail=="string"?{detail:r.detail}:{},...typeof r.statusCode=="string"?{statusCode:r.statusCode}:{},...typeof r.errorCode=="string"?{errorCode:r.errorCode}:{},...typeof r.requestId=="string"?{requestId:r.requestId}:{},...typeof r.responseBody=="string"?{responseBody:r.responseBody}:{}})}return`${t}
${JSON.stringify(i,null,2)}`}catch{return`${t}
-${n}`}}async function*sZe({runtimeId:e,region:t,instanceName:n,sessionId:i,follow:r=!0,signal:s}){const a=new URLSearchParams({region:t,follow:String(r)});n&&a.set("instance_name",n),i&&a.set("session_id",i);const l=await fetch(ta(`/web/runtime-logs/${encodeURIComponent(e)}/stream?${a.toString()}`),{headers:Ll(pu({Accept:"text/event-stream"})),cache:"no-store",signal:s});if(!l.ok)throw new Error(V("runtimeLogs.loadFailedWithDetail",{detail:await rZe(l)}));for await(const c of zI(l)){if(!iZe(c))throw new Error(V("runtimeLogs.invalidFormat"));yield c}}const oZe=255,aZe=/[\p{L}\p{M}\p{N}\p{P}\p{Zs}]/u;function lZe(e){const t=e.normalize("NFKC").replace(/\s+/gu," ").trim(),n=new TextEncoder;let i=0,r="";for(const s of t){if(!aZe.test(s))continue;const a=n.encode(s).byteLength;if(i+a>oZe)break;r+=s,i+=a}return r.replace(/ +/g," ").trimEnd()}const cZe=/RunPipeline result could not be reconciled|Polling build status failed/i;class D_ extends Error{constructor({taskId:n,cause:i}={}){super("The deployment request may still be running, but its status could not be confirmed.");Jt(this,"taskId");this.name="DeploymentStatusUnconfirmedError",this.taskId=n}}function _Ee(e){if(e instanceof D_)return!0;const t=e instanceof Error?e.message:String(e??"");return cZe.test(t)}function jEe(e){return!!(e&&typeof e=="object"&&"name"in e&&e.name==="AbortError")}async function uZe({load:e,signal:t,timeoutMs:n=30*6e4,intervalMs:i=2e3,shouldRetry:r=()=>!0}){if(t!=null&&t.aborted)throw t.reason??new DOMException("Aborted","AbortError");const s=Date.now()+Math.max(0,n);for(;!(t!=null&&t.aborted)&&Date.now()<=s;){try{const a=await e(t);if(a.done)return a}catch(a){if(t!=null&&t.aborted||jEe(a)||!r(a))throw a}if(t!=null&&t.aborted)throw t.reason??new DOMException("Aborted","AbortError");i<=0||await new Promise((a,l)=>{const c=()=>{globalThis.clearTimeout(u),t==null||t.removeEventListener("abort",c),l((t==null?void 0:t.reason)??new DOMException("Aborted","AbortError"))},u=globalThis.setTimeout(()=>{t==null||t.removeEventListener("abort",c),a()},i);t==null||t.addEventListener("abort",c,{once:!0})})}return null}const Q$="ap-southeast-1",wU="cn-beijing",dZe="https://ark.ap-southeast.bytepluses.com/api/v3",fZe="https://ark.cn-beijing.volces.com/api/v3/",hZe="https://console.byteplus.com/ark/region:ark+ap-southeast-1/openManagement",pZe="https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement",mZe="dola-seed-2-1-turbo-260628",gZe="doubao-seed-2-1-pro-260628",bZe="skylark-embedding-vision-250615",yZe="doubao-embedding-vision-250615",vZe="seed-2-0-lite-260228",xZe="doubao-seed-2-0-lite-260428",wZe="dola-seedream-5-0-pro-260628",OZe="doubao-seedream-5-0-260128",kZe="seededit-3-0-i2i-250628",SZe="doubao-seededit-3-0-i2i-250628",EZe="dreamina-seedance-2-0-260128",CZe="doubao-seedance-2-0-260128";function iu(e){return e==="byteplus"?[{value:Q$,label:Q$}]:[{value:"cn-beijing",label:V("cloudRegion.cnBeijing")},{value:"cn-shanghai",label:V("cloudRegion.cnShanghai")}]}function qi(e){var t;return((t=iu(e)[0])==null?void 0:t.value)||wU}const TZe=new Set(["cn-beijing","cn-shanghai","ap-southeast-1"]);function VI(e){return typeof e=="string"&&TZe.has(e)}function Lf(e,t){var i;return((i=(t?iu(t):[...iu("volcengine"),...iu("byteplus")]).find(r=>r.value===e))==null?void 0:i.label)||e||"-"}function lp(e){return e==="byteplus"?mZe:gZe}function wa(e){return e==="byteplus"?dZe:fZe}function AZe(e){return e==="byteplus"?hZe:pZe}function _Ze(e){return e==="byteplus"?bZe:yZe}function jZe(e){return e==="byteplus"?vZe:xZe}function NZe(e){return e==="byteplus"?wZe:OZe}function RZe(e){return e==="byteplus"?kZe:SZe}function IZe(e){return e==="byteplus"?EZe:CZe}const OU="veadk.messageFeedback.v1";function kU(e,t,n,i){return[e,t,n,i].join(":")}function SU(){if(typeof window>"u")return{};try{const e=JSON.parse(localStorage.getItem(OU)??"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function PZe(e,t,n){if(typeof window>"u")return;const i=SU();i[e]={...i[e]??{},[`veadk_feedback:${t}`]:n},localStorage.setItem(OU,JSON.stringify(i))}function NEe(e){if(typeof window>"u")return;const t=kU(e.runtimeId,e.appName,e.userId,e.sessionId),n=SU(),i=n[t];if(i){for(const r of e.eventIds)delete i[`veadk_feedback:${r}`];Object.keys(i).length===0?delete n[t]:n[t]=i,localStorage.setItem(OU,JSON.stringify(n))}}const M_="",EU=new Map;function REe(e,t){EU.set(e,t)}function IEe(){EU.clear()}function pc(e){const t=EU.get(e);return t?{app:t.app,ep:{base:t.base,apiKey:t.apiKey,runtimeId:t.runtimeId,region:t.region}}:{app:e,ep:{}}}async function Lt(e,t={},n={},i=qa){const r=Wa(t.signal,i),s=!!n.runtimeId&&String(t.method??"GET").toUpperCase()==="DELETE",a={...t,...s?{method:"POST"}:{},headers:Ll(pu(t.headers))},l=()=>{const d={...a,signal:r};if(n.runtimeId){const f=new URLSearchParams;n.region&&f.set("_runtime_region",n.region),n.retryProbe&&f.set("probe_retry","connect"),s&&f.set("_method","DELETE");const h=f.toString()?`${e.includes("?")?"&":"?"}${f.toString()}`:"";return fetch(ta(`${M_}/web/runtime-proxy/${n.runtimeId}${e}${h}`),d)}if(n.base){const f=new Headers(d.headers);return f.set("X-AgentKit-Base",n.base),n.apiKey&&f.set("X-AgentKit-Key",n.apiKey),fetch(ta(`${M_}/agentkit-proxy${e}`),{...d,headers:f})}return fetch(ta(`${M_}${e}`),d)},c=async d=>{if(d.headers.get("X-Studio-Error-Source")==="upstream")return!1;if(zYe(d))return!0;if(d.status!==401)return!1;try{return await $Ye()}catch{return!1}};let u=await l();for(;await c(u);)await VYe(r),u=await l();return u}function pn(e,t={},n=qa){return Lt(e,t,{},n)}function DZe(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>{var n;if(t&&typeof t=="object"&&"msg"in t){const i=Array.isArray(t.loc)?(n=t.loc)==null?void 0:n.join("."):"",r=String(t.msg??"");return i?`${i}: ${r}`:r}return String(t)}).filter(Boolean).join(`
-`):e&&typeof e=="object"?JSON.stringify(e):""}async function dn(e,t){const n=e.headers.get("X-Studio-Error-Source"),i=n==="upstream"?e.headers.get("X-Studio-Upstream-Status")??e.status:e.status,r=V("common.fallbackWithHttpStatus",{fallback:t,status:i}),s=await e.text().catch(()=>"");if(n==="upstream")return V("client.errorWithCloudResponse",{context:r,action:e.headers.get("X-Studio-Upstream-Action")??"",response:s||V("client.emptyCloudResponse")});if(!s)return r;try{const a=JSON.parse(s),l=DZe(a.detail??a.error);return n==="transport"||n==="studio"?l?`${r}
-${l}`:r:l?V("client.errorWithDetailAndRawResponse",{context:r,detail:l,response:s}):V("client.errorWithRawResponse",{context:r,response:s})}catch{return V("client.errorWithRawResponse",{context:r,response:s})}}async function CU(e,t=!1){const n=await Lt(`/web/model-api-keys${t?"?refresh=true":""}`,{signal:e,cache:"no-store"});if(!n.ok)throw new Error(await dn(n,V("client.loadArkApiKeysFailed")));return await n.json()}async function PEe(e,t){const n=await Lt(`/web/model-api-keys/${encodeURIComponent(e)}/value`,{method:"POST",signal:t,cache:"no-store"});if(!n.ok)throw new Error(await dn(n,V("client.loadArkApiKeysFailed")));return await n.json()}async function Bw(e){const t=new URLSearchParams;e!=null&&e.apiKeyId&&t.set("apiKeyId",e.apiKeyId),e!=null&&e.refresh&&t.set("refresh","true"),e!=null&&e.scope&&t.set("scope",e.scope);const n=t.toString(),i=await Lt(`/web/model-options${n?`?${n}`:""}`,{signal:e==null?void 0:e.signal,cache:"no-store"});if(!i.ok)throw new Error(await dn(i,V("client.loadModelsFailed")));return await i.json()}async function DEe(){const e=await Lt("/list-apps");if(!e.ok)throw new Error(`list-apps failed: ${e.status}`);return e.json()}class Uw extends Error{constructor(){super(V("client.runtimeAccessDenied")),this.name="RuntimeAccessDeniedError"}}class po extends Error{constructor(t,n=!1,i=!1){super(t),this.unsupported=n,this.retryable=i,this.name="RuntimeProbeError"}}const MEe=()=>V("client.privateRuntimeUnavailable"),LEe=()=>V("client.runtimeTemporarilyUnavailable"),lY=["cn-beijing","cn-shanghai"],MZe=3e4,Qw=5*60*1e3,$Ee=60*1e3;let VS="volcengine";const ix=new Map,yb=new Map,vb=new Map,xd=new Map,Vr=new Map;function TU(e,t,n){return`${t}:${e}:${n??""}`}function FEe(e){e!==VS&&Vr.clear(),VS=e}function kC(e){const t=(e||"").trim();if(VS==="byteplus")return[t&&!t.startsWith("cn-")?t:Q$];const n=t&&!t.startsWith("ap-")?t:wU;return lY.includes(n)?[n,...lY.filter(i=>i!==n)]:[n]}function HI(e){const t=(e||"").trim();return t?[t]:kC()}function qy(...e){return e.map(t=>String(t??"")).join("")}function _g(e,t,n){const i=e.get(t);return i!=null&&i.value&&Date.now()-i.updatedAt<=n?i.value:null}function AU(e,t,n){return e.set(t,{value:n,updatedAt:Date.now()}),n}function C2(e,t){return t?t.aborted?Promise.reject(new DOMException("The operation was aborted.","AbortError")):new Promise((n,i)=>{const r=()=>{i(new DOMException("The operation was aborted.","AbortError"))};t.addEventListener("abort",r,{once:!0}),e.then(s=>{t.removeEventListener("abort",r),n(s)},s=>{t.removeEventListener("abort",r),i(s)})}):e}async function BEe(e){try{const t=await e.clone().json();return typeof t.detail=="string"?t.detail:""}catch{return""}}async function SC(e,t,n,i,r=qa){const s=await Lt("/list-apps",{signal:i},n??{base:e,apiKey:t},r),a=n!=null&&n.runtimeId?await BEe(s):"";if(n!=null&&n.runtimeId&&a==="runtime_access_denied")throw new Uw;if(n!=null&&n.runtimeId&&a==="runtime_private_endpoint_unreachable")throw new po(MEe());if(n!=null&&n.runtimeId&&["runtime_proxy_connect_error","runtime_proxy_timeout","runtime_json_connect_error","runtime_json_timeout"].includes(a))throw new po(LEe(),!1,!0);if(n!=null&&n.runtimeId&&s.status===404)throw new po(V("client.runtimeConnectionUnsupported"),!0,!0);if(n!=null&&n.runtimeId&&(s.status===401||s.status===403))throw new po(V("client.runtimeConnectionDenied"));if(!s.ok)throw new Error(await dn(s,V("client.listAgentsFailed")));let l;try{l=await s.json()}catch{throw new po(V("client.invalidListAppsJson"))}if(!Array.isArray(l)||l.some(u=>typeof u!="string"||!u.trim()))throw new po(V("client.invalidListAppsFormat"));const c=l.map(u=>u.trim());return n!=null&&n.runtimeId&&ix.set(TU(n.runtimeId,n.region??"",n.runtimeVersion),{apps:c,expiresAt:Date.now()+MZe}),c}async function UEe(e,t){const{app:n,ep:i}=pc(e),r=await Lt(`/apps/${n}/users/${encodeURIComponent(t)}/sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"},i);if(!r.ok){const a=V("client.createSessionFailedWithStatus",{status:r.status}),l=await dn(r,V("client.createSessionFailed"));throw new Error(l===a?a:V("common.fallbackWithDetail",{fallback:a,detail:l}))}return(await r.json()).id}async function _U(e,t){const{app:n,ep:i}=pc(e),r=await Lt(`/apps/${n}/users/${encodeURIComponent(t)}/sessions`,{},i);if(!r.ok)throw new Error(`list sessions failed: ${r.status}`);return r.json()}async function qI(e,t,n){const{app:i,ep:r}=pc(e),s=await Lt(`/apps/${i}/users/${encodeURIComponent(t)}/sessions/${encodeURIComponent(n)}`,{},r);if(!s.ok){const l=await dn(s,V("client.getSessionFailed"));throw new Error(V("client.getSessionFailedWithDetail",{status:s.status,detail:l}))}const a=await s.json();if(r.runtimeId){const l=kU(r.runtimeId,i,t,n);a.state={...SU()[l]??{},...a.state??{}}}return a}async function QEe(e){const{app:t,ep:n}=pc(e.appName);if(!n.runtimeId)throw new Error(V("client.feedbackRuntimeOnly"));if(!n.region)throw new Error(V("client.feedbackRegionMissing"));const i=await Lt("/web/evaluation/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:n.runtimeId,region:n.region,appName:t,userId:e.userId,sessionId:e.sessionId,eventId:e.eventId,rating:e.rating,comment:e.comment??""})},{},hr);if(!i.ok)throw new Error(await dn(i,V("client.submitFeedbackFailed")));const r=await i.json(),s=kU(n.runtimeId,t,e.userId,e.sessionId);return PZe(s,e.eventId,r),r}async function WI(e,t={}){const n=qy(e.runtimeId,e.region||"cn-beijing",e.appName,e.pageSize??100),i=_g(xd,n,$Ee);if(!t.force&&i)return i;const r=xd.get(n);if(!t.force&&(r!=null&&r.promise))return r.promise;let s=null;const a=(async()=>{for(const l of HI(e.region)){const c=new URLSearchParams({runtimeId:e.runtimeId,region:l,appName:e.appName,page_size:String(e.pageSize??100)}),u=await Lt(`/web/evaluation/feedback-cases?${c.toString()}`);if(u.ok)return AU(xd,n,await u.json());s=new Error(await dn(u,V("client.loadEvaluationSetsFailed")))}throw s??new Error(V("client.loadEvaluationSetsFailed"))})();xd.set(n,{...r,promise:a,updatedAt:(r==null?void 0:r.updatedAt)??0});try{return await a}finally{const l=xd.get(n);(l==null?void 0:l.promise)===a&&xd.set(n,{value:l.value,updatedAt:l.updatedAt})}}async function z$(e){let t=null;for(const n of HI(e.region)){const i=new URLSearchParams({runtimeId:e.runtimeId,region:n,appName:e.appName,userId:e.userId}),r=await Lt(`/web/evaluation/statuses?${i.toString()}`);if(r.ok)return r.json();t=new Error(await dn(r,V("client.loadAutoEvaluationStatusFailed")))}throw t??new Error(V("client.loadAutoEvaluationStatusFailed"))}async function zEe(e){let t=null;for(const n of HI(e.region)){const i=new URLSearchParams({runtimeId:e.runtimeId,region:n,appName:e.appName}),r=await Lt(`/web/evaluation/optimizations?${i.toString()}`);if(r.ok)return r.json();t=new Error(await dn(r,V("client.loadOptimizationsFailed")))}throw t??new Error(V("client.loadOptimizationsFailed"))}function VEe(e){return _g(xd,qy(e.runtimeId,e.region||"cn-beijing",e.appName,e.pageSize??100),$Ee)}function LZe(e){WI(e).catch(()=>{})}function HEe(e){WI(e,{force:!0}).catch(()=>{})}function qEe(e,t){return["good","bad"].map(n=>{const i=e.find(r=>r.kind===n);return{kind:n,evaluationSetId:(i==null?void 0:i.evaluationSetId)??null,evaluationSetName:(i==null?void 0:i.evaluationSetName)??null,workspaceId:(i==null?void 0:i.workspaceId)??null,itemCount:t.filter(r=>r.kind===n).length}})}function L_(e){const t=e.comment??"",n=e.rating==="bad"&&!!t.trim();for(const[i,r]of xd.entries()){const s=r.value;if(!s||s.runtimeId!==e.runtimeId||s.agentName!==e.appName)continue;const a=s.items.filter(c=>c.sessionId!==e.sessionId||c.messageId!==e.messageId),l=e.rating?[{id:`local:${e.runtimeId}:${e.sessionId}:${e.messageId}`,itemKey:`local:${e.messageId}`,kind:e.rating,input:e.input,output:e.output,referenceOutput:e.referenceOutput??e.output,comment:t,agentName:e.appName,sessionId:e.sessionId,messageId:e.messageId,runtimeId:e.runtimeId,invocationId:e.invocationId??"",userId:e.userId,createdAt:e.createdAt??new Date().toISOString(),evaluationSetId:"",evaluationSetName:"",workspaceId:"",source:"user",score:n?0:null,reason:n?t:""},...a]:a;xd.set(i,{value:{...s,sets:qEe(s.sets,l),items:l},updatedAt:Date.now(),promise:r.promise})}}async function WEe(e){let t=null;for(const n of HI(e.region)){const i=await Lt("/web/evaluation/feedback-cases/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e.runtimeId,region:n,appName:e.appName,itemIds:e.itemIds})},{},hr);if(i.ok){const r=await i.json(),s=new Set(e.itemIds);for(const[a,l]of xd.entries()){const c=l.value;if(!c||c.runtimeId!==e.runtimeId||c.agentName!==e.appName)continue;const u=c.items.filter(d=>!s.has(d.id));xd.set(a,{value:{...c,sets:qEe(c.sets,u),items:u},updatedAt:Date.now()})}return r}t=new Error(await dn(i,V("client.deleteEvaluationCaseFailed")))}throw t??new Error(V("client.deleteEvaluationCaseFailed"))}async function V$(e,t,n){const{app:i,ep:r}=pc(e),s=await Lt(`/apps/${i}/users/${encodeURIComponent(t)}/sessions/${n}`,{method:"DELETE"},r);if(!s.ok&&s.status!==404)throw new Error(`delete session failed: ${s.status}`)}function $Ze(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"="),i=window.atob(n),r=new Uint8Array(i.length);for(let s=0;sURL.revokeObjectURL(l),0)}async function KEe(e,t,n,i,r){const{app:s,ep:a}=pc(e),l=r==null?"":`?version=${encodeURIComponent(r)}`,c=`/apps/${encodeURIComponent(s)}/users/${encodeURIComponent(t)}/sessions/${encodeURIComponent(n)}/artifacts/${encodeURIComponent(i)}${l}`,u=await Lt(c,{},a,hr);if(!u.ok)throw new Error(await dn(u,V("client.downloadFileFailed")));const d=await u.json(),f=d.inlineData??d.inline_data;if(!(f!=null&&f.data))throw new Error(V("client.fileUnavailable"));const h=$Ze(f.data),m=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);return{blob:new Blob([m],{type:f.mimeType??f.mime_type??"application/octet-stream"}),downloadName:f.displayName??f.display_name??i}}async function NU(e,t,n,i,r){const{blob:s}=await KEe(e,t,n,i,r);return URL.createObjectURL(s)}async function FZe(e){const t=await Lt("/web/media/capabilities");if(!t.ok)throw new Error(await dn(t,"media capabilities failed"));return t.json()}async function GEe(e,t,n,i){const{app:r}=pc(e),s=new FormData;s.set("app_name",r),s.set("user_id",t),s.set("session_id",n),s.set("file",i);const a=await Lt("/web/media",{method:"POST",body:s},{},hr);if(!a.ok)throw new Error(await dn(a,V("client.uploadFileFailed")));return{...await a.json(),status:"ready"}}async function H$(e,t,n){const{app:i}=pc(e),r=`/web/media/${encodeURIComponent(i)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}/delete`,s=await Lt(r,{method:"POST"});if(!s.ok&&s.status!==404)throw new Error(await dn(s,"media cleanup failed"))}function XEe(e){try{const t=new URL(e);if(t.protocol!=="veadk-media:"||t.hostname!=="apps")return;const n=t.pathname.split("/").filter(Boolean).map(decodeURIComponent);return n.length!==7||n[1]!=="users"||n[3]!=="sessions"||n[5]!=="media"?void 0:`/web/media/${n.map(encodeURIComponent).filter((i,r)=>![1,3,5].includes(r)).join("/")}`}catch{return}}async function $_(e,t){const n=XEe(t);if(!n)throw new Error("Invalid VeADK media URI");const i=await Lt(`${n}/delete`,{method:"POST"});if(!i.ok&&i.status!==404)throw new Error(await dn(i,"media cleanup failed"))}function YEe(e,t){if(t.startsWith("data:")||t.startsWith("blob:")||/^https?:/.test(t))return t;const n=XEe(t);if(!n)return t;const i=`${n}/content`;return ta(`${M_}${i}`)}async function kN(e,t,n){const{app:i,ep:r}=pc(e);let s;if(r.runtimeId){const c=new URLSearchParams({runtimeId:r.runtimeId,sessionId:t,region:r.region??"cn-beijing"});if(n&&c.set("endTimeMs",String(Math.round(n))),s=await Lt(`/web/runtime-trace?${c.toString()}`),s.status===404)throw new Error(V("client.traceDisabled"))}else s=await Lt(`/dev/apps/${encodeURIComponent(i)}/debug/trace/session/${encodeURIComponent(t)}`,{},r);if(!s.ok)throw new Error(await dn(s,V("client.loadTraceFailed")));const a=s.headers.get("content-type")??"";if(!a.includes("application/json")){const c=a.split(";",1)[0]||V("client.contentTypeMissing");throw new Error(V("client.traceNonJson",{contentType:c}))}const l=await s.json();if(!Array.isArray(l))throw new Error(V("client.invalidTraceFormat"));return l}async function q$(e){const t=await Lt("/web/issue-feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(await dn(t,V("client.submitIssueFeedbackFailed")));if((await t.json()).submitted!==!0)throw new Error(V("client.issueFeedbackNotConfirmed"));return{submitted:!0}}async function ZEe(e,t,n=!0){const i=await Lt(`/web/agent-info/${e}`,{},t);if(!i.ok)throw new Error(`agent-info failed: ${i.status}`);const r=await i.json();if(n&&!r.draft)try{const s=await Lt(`/web/agent-draft/${e}`,{},t);if(s.ok){const a=await s.json();r.draft=a.draft}}catch{}return{appName:e,name:r.name??e,description:r.description??"",type:r.type,model:r.model??"",tools:r.tools??[],skillsPreviewSupported:Array.isArray(r.skills),skills:r.skills??[],subAgents:r.subAgents??[],components:r.components??[],searchSources:r.searchSources??[],graph:r.graph,draft:r.draft}}async function W$(e){const{app:t,ep:n}=pc(e);return ZEe(t,n,!1)}async function BZe(e,t,n){let i=null;for(const r of kC(t)){const s={runtimeId:e,region:r};try{const a=TU(e,r),l=ix.get(a);l&&l.expiresAt<=Date.now()&&ix.delete(a);const c=ix.get(a),u=n||(c==null?void 0:c.apps[0])||(await SC("","",s))[0];if(!u)throw new Error(V("client.noPreviewableAgent"));return ZEe(u,s)}catch(a){if(a instanceof Uw||a instanceof po&&!a.unsupported)throw a;i=a instanceof Error?a:new Error(String(a))}}throw i??new Error(V("client.noPreviewableAgent"))}async function RU(e,t,n={},i={}){const r=typeof n=="string"?n:void 0,s=typeof n=="string"?i:n,a=qy(e,t||"cn-beijing",r??""),l=_g(yb,a,Qw);if(!s.force&&l)return l;const c=yb.get(a);if(!s.force&&(c!=null&&c.promise))return c.promise;const u=BZe(e,t,r).then(d=>AU(yb,a,d));yb.set(a,{...c,promise:u,updatedAt:(c==null?void 0:c.updatedAt)??0});try{return await u}finally{const d=yb.get(a);(d==null?void 0:d.promise)===u&&yb.set(a,{value:d.value,updatedAt:d.updatedAt})}}function JEe(e,t,n=""){return _g(yb,qy(e,t||"cn-beijing",n),Qw)}function eCe(e,t,n=""){RU(e,t,n).catch(()=>{})}async function tCe(e,t,n,i){const{app:r,ep:s}=pc(e),a=new URLSearchParams({source:t,app_name:r,q:n,user_id:i}),l=await Lt(`/web/search?${a.toString()}`,{},s);if(!l.ok)throw new Error(await dn(l,V("client.agentSearchFailed")));return l.json()}async function nCe(e,t){const{app:n}=pc(e),i=await Lt(`/web/search?source=web&app_name=${encodeURIComponent(n)}&q=${encodeURIComponent(t)}`);if(!i.ok)throw new Error(`web search failed: ${i.status}`);return i.json()}function iCe(){return lm(V("client.emptySseBody"))}function F_(){return lm(V("client.noDisplayableSseReply"))}const UZe=6e4;function Kx(){return V("client.firstSseEventTimeout")}function rCe(e){if(e!=null&&e.aborted)return{signal:e,clearDeadline:()=>{},cleanup:()=>{},timedOut:()=>!1};const t=new AbortController;let n=!1,i=!1;const r=()=>{i||(i=!0,clearTimeout(a))},s=()=>{t.signal.aborted||t.abort((e==null?void 0:e.reason)??new DOMException("Aborted","AbortError"))},a=setTimeout(()=>{i||t.signal.aborted||(n=!0,i=!0,t.abort(new Error(Kx())))},UZe);return e==null||e.addEventListener("abort",s,{once:!0}),{signal:t.signal,clearDeadline:r,cleanup:()=>{r(),e==null||e.removeEventListener("abort",s)},timedOut:()=>n}}async function*K$({appName:e,userId:t,sessionId:n,text:i,attachments:r=[],invocation:s,platformTools:a,environmentMounts:l,environmentMount:c,functionResponses:u=[],signal:d,onRuntimeContext:f}){const{app:h,ep:m}=pc(e),g=r.flatMap(S=>S.status&&S.status!=="ready"?[]:S.uri?[{fileData:{mimeType:S.mimeType,fileUri:S.uri,displayName:S.name},partMetadata:{veadkMedia:{id:S.id,uri:S.uri,name:S.name,mimeType:S.mimeType,sizeBytes:S.sizeBytes}}}]:S.data?[{inlineData:{mimeType:S.mimeType,data:S.data,displayName:S.name}}]:[]),b=s&&(s.skills.length>0||s.targetAgent)?s:void 0,v=[...g,...u.map(S=>({functionResponse:{id:S.id,name:S.name,response:S.response}})),...i.trim()?[{text:i}]:[]];if(b&&v.length>0){const S=v[0],k=S.partMetadata;v[0]={...S,partMetadata:{...k,veadkInvocation:b}}}let y;const w=rCe(d);try{y=await Lt("/run_sse",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app_name:h,user_id:t,session_id:n,new_message:{role:"user",parts:v},streaming:!0,...a!==void 0?{platform_tools:[...a]}:{},...l!==void 0?{environment_mounts:[...l]}:c?{environment_mount:c}:{},custom_metadata:b?{veadkInvocation:b}:void 0}),signal:w.signal},m,0)}catch(S){throw w.cleanup(),w.timedOut()?new Error(Kx()):d!=null&&d.aborted||(S==null?void 0:S.name)==="AbortError"?S:new Error(lm(S))}const x=tZe(y,m.runtimeId??"",m.region??"");if(x&&(f==null||f(x)),!y.ok){w.cleanup();const S=await dn(y,V("client.runSessionFailed"));throw new Error(lm(V("client.runSseFailedWithDetail",{status:y.status,detail:S})))}let O=!1;try{for await(const S of zI(y)){O=!0,w.clearDeadline();const k=S;typeof k.error=="string"&&(k.error=lm(k.error)),typeof k.errorMessage=="string"&&(k.errorMessage=lm(k.errorMessage)),typeof k.error_message=="string"&&(k.error_message=lm(k.error_message)),yield k}}catch(S){throw w.timedOut()?new Error(Kx()):d!=null&&d.aborted||(S==null?void 0:S.name)==="AbortError"?S:new Error(lm(S))}finally{w.cleanup()}if(!O)throw new Error(iCe())}async function KI(e,t){const n=new URLSearchParams({name:e,region:t}),i=await Lt(`/web/runtime-name-availability?${n.toString()}`,{cache:"no-store"});if(!i.ok)throw new Error(await dn(i,V("client.checkRuntimeNameFailed")));const r=await i.json();if(typeof r.available!="boolean")throw new Error(V("client.invalidRuntimeNameCheck"));return{available:r.available}}async function sCe(e,t){const n=new URLSearchParams({kind:e.kind,region:e.region});e.registry&&n.set("registry",e.registry),e.namespace&&n.set("namespace",e.namespace),e.workspaceId&&n.set("workspaceId",e.workspaceId),e.search&&n.set("search",e.search),e.pageNumber&&n.set("pageNumber",String(e.pageNumber)),e.pageSize&&n.set("pageSize",String(e.pageSize));const i=await Lt(`/web/deployment-resources?${n.toString()}`,{signal:t});if(!i.ok)throw new Error(await dn(i,V("client.loadCloudResourcesFailed")));const r=await i.json();if(typeof r.serviceRegion!="string"||!Array.isArray(r.items)||typeof r.pageNumber!="number"||typeof r.pageSize!="number"||typeof r.totalCount!="number"||typeof r.hasMore!="boolean")throw new Error(V("client.invalidCloudResources"));const s=r.items.map(a=>{if(!a||typeof a!="object"||typeof a.id!="string"||typeof a.name!="string"||typeof a.region!="string"||typeof a.status!="string")throw new Error(V("client.invalidCloudResources"));return a});return{serviceRegion:r.serviceRegion,items:s,pageNumber:r.pageNumber,pageSize:r.pageSize,totalCount:r.totalCount,hasMore:r.hasMore}}function oCe(e,t){const n=e;if(!n||typeof n!="object"||!Array.isArray(n.mounts))throw new Error(V("client.invalidEnvironmentMount"));if(n.mounts.length!==t.length)throw new Error(V("client.environmentMountMismatch"));return n.mounts.map((i,r)=>{const s=t[r];if(!i||typeof i!="object"||typeof i.environment_id!="string"||typeof i.environment_version_id!="string"||typeof i.mount_instance_id!="string"||typeof i.sandbox_session_id!="string"||!i.environment_id||!i.environment_version_id||!i.mount_instance_id||!i.sandbox_session_id)throw new Error(V("client.invalidEnvironmentMount"));if(i.environment_id!==s.environment_id||i.environment_version_id!==s.environment_version_id||s.mount_instance_id!==void 0&&i.mount_instance_id!==s.mount_instance_id)throw new Error(V("client.environmentMountMismatch"));return i})}async function aCe({runtimeId:e,appName:t,userId:n,sessionId:i,environmentMounts:r}){const{app:s}=pc(t);let a;try{a=await Lt("/web/v3/session-environment-mounts/prepare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtime_id:e,app_name:s,user_id:n,session_id:i,environment_mounts:[...r]})})}catch(l){throw l instanceof TypeError?new Error(V("client.environmentMountNetworkFailed")):l}if(!a.ok)throw new Error(await dn(a,V("client.environmentMountFailed")));return oCe(await a.json(),r)}function IU(e){const t=new Set,n=[];for(const i of e.split(/[,,\n\r]+/)){const r=i.trim();!r||t.has(r)||(t.add(r),n.push(r))}return n}async function lCe(e,t=typeof navigator>"u"?void 0:navigator.clipboard){if(!(t!=null&&t.writeText))throw new Error(V("client.clipboardUnsupported"));try{await t.writeText(e)}catch{throw new Error(V("client.clipboardWriteFailed"))}}const cY={codex:0,codex_snapshot:1,deepseek_harness:2,deepseek_harness_snapshot:3,openclaw:4,openclaw_snapshot:5,hermes:6,hermes_snapshot:7,dev:8};async function cCe(e){var r;const t=await Lt("/web/system-info",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadSystemInfoFailed")));const n=await t.json();if(typeof((r=n.storage)==null?void 0:r.tosAddress)!="string"||!Array.isArray(n.sandboxTools))throw new Error(V("client.invalidSystemInfo"));const i=n.sandboxTools.map(s=>{if(!s||typeof s!="object"||typeof s.kind!="string"||typeof s.label!="string"||typeof s.toolId!="string"||typeof s.snapshot!="boolean"||typeof s.needsModelEnvUpdate!="boolean"||typeof s.canUpdateModelEnv!="boolean"||typeof s.modelEnvError!="string"||typeof s.modelEnvErrorCode!="string")throw new Error(V("client.invalidSystemInfo"));return s}).sort((s,a)=>(cY[s.kind]??Number.MAX_SAFE_INTEGER)-(cY[a.kind]??Number.MAX_SAFE_INTEGER));return{storage:{tosAddress:n.storage.tosAddress},sandboxTools:i}}const uCe=new Set(["preparing","queued","building","scanning","available","failed"]);function PU(e){if(e===null)return null;if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironmentBuild"));const t=e;if(typeof t.versionId!="string"||!uCe.has(t.status)||typeof t.image!="string"||typeof t.error!="string"||typeof t.createdAt!="string"||typeof t.updatedAt!="string"||t.resources!==null&&typeof t.resources!="object")throw new Error(V("client.invalidEnvironmentBuild"));const n=Array.isArray(t.steps)?t.steps.map(i=>{if(!i||typeof i!="object"||typeof i.key!="string"||typeof i.label!="string"||!["pending","running","succeeded","failed"].includes(i.status)||i.startedAt!==null&&typeof i.startedAt!="string"||i.finishedAt!==null&&typeof i.finishedAt!="string")throw new Error(V("client.invalidEnvironmentBuildStep"));return i}):[];return{...t,toolId:typeof t.toolId=="string"?t.toolId:"",toolStatus:["creating","ready","failed"].includes(t.toolStatus)?t.toolStatus:"",runId:typeof t.runId=="string"?t.runId:"",currentStep:typeof t.currentStep=="string"?t.currentStep:"",sourceCommitSha:typeof t.sourceCommitSha=="string"?t.sourceCommitSha:"",steps:n,progressError:typeof t.progressError=="string"?t.progressError:"",logTail:typeof t.logTail=="string"?t.logTail:"",logTruncated:t.logTruncated===!0,logUpdatedAt:typeof t.logUpdatedAt=="string"?t.logUpdatedAt:null,logError:typeof t.logError=="string"?t.logError:""}}function dCe(e){if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironmentManifest"));const t=e;if(!["agentkit.studio/v3","agentkit.studio/v1alpha1"].includes(t.apiVersion)||t.kind!=="Environment"||!t.metadata||typeof t.metadata.id!="string"||typeof t.metadata.name!="string"||typeof t.metadata.version!="string"||typeof t.metadata.description!="string"||!t.spec||typeof t.spec.image!="string"||!["ubuntu","aio-sandbox","codex-sandbox"].includes(t.spec.baseEnvironment)||typeof t.spec.baseImage!="string"||!["ubuntu-22.04","ubuntu-24.04"].includes(t.spec.operatingSystem)||!["python-3.10","python-3.12"].includes(t.spec.language)||t.spec.executionRuntime!=="veadk"||!Array.isArray(t.spec.packages)||!t.spec.packages.every(n=>typeof n=="string")||!Array.isArray(t.spec.capabilities)||!t.spec.capabilities.every(n=>typeof n=="string")||!Array.isArray(t.spec.skills)||!t.status||!uCe.has(t.status.phase)||typeof t.status.createdAt!="string"||typeof t.status.updatedAt!="string")throw new Error(V("client.invalidEnvironmentManifest"));return t}function fCe(e){if(e==null)return;if(!e||typeof e!="object")throw new Error(V("client.invalidImageRepository"));const t=e;if(typeof t.region!="string"||typeof t.registry!="string"||typeof t.namespace!="string"||typeof t.repository!="string")throw new Error(V("client.invalidImageRepository"));return t}function QZe(e){if(e==null)return;if(!e||typeof e!="object")throw new Error(V("client.invalidCodeRepository"));const t=e;if(typeof t.repositoryUrl!="string"||t.ref!==void 0&&typeof t.ref!="string"||typeof t.dockerfilePath!="string")throw new Error(V("client.invalidCodeRepository"));return t}function zZe(e){const t=fCe(e);if(!t)return;const n=e;if(typeof n.reference!="string")throw new Error(V("client.invalidImageSource"));return{...t,reference:n.reference}}function DU(e){if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironment"));const t=e;if(typeof t.id!="string"||typeof t.name!="string"||typeof t.description!="string"||t.baseEnvironment!==void 0&&t.baseEnvironment!=="ubuntu"&&t.baseEnvironment!=="aio-sandbox"&&t.baseEnvironment!=="codex-sandbox"||t.operatingSystem!=="ubuntu-22.04"&&t.operatingSystem!=="ubuntu-24.04"||t.language!=="python-3.10"&&t.language!=="python-3.12"||!Array.isArray(t.optionIds)||!t.optionIds.every(n=>typeof n=="string")||t.selectedSkills!==void 0&&!Array.isArray(t.selectedSkills)||typeof t.dockerfile!="string"||typeof t.createdAt!="string"||typeof t.updatedAt!="string")throw new Error(V("client.invalidEnvironment"));return{...t,baseEnvironment:t.baseEnvironment==="aio-sandbox"?"aio-sandbox":t.baseEnvironment==="codex-sandbox"?"codex-sandbox":"ubuntu",selectedSkills:t.selectedSkills??[],gitSource:QZe(t.gitSource),containerRepository:fCe(t.containerRepository),imageSource:zZe(t.imageSource),latestVersion:PU(t.latestVersion)}}function hCe(e){if(!e||typeof e!="object")throw new Error(V("client.invalidWorkspace"));const t=e;if(typeof t.id!="string"||typeof t.name!="string"||typeof t.description!="string"||!Array.isArray(t.environmentIds)||!t.environmentIds.every(n=>typeof n=="string")||typeof t.createdAt!="string"||typeof t.updatedAt!="string")throw new Error(V("client.invalidWorkspace"));return t}async function MU(e){const t=await Lt("/web/workspaces",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadWorkspacesFailed")));const n=await t.json();if(!Array.isArray(n.items))throw new Error(V("client.invalidWorkspaceList"));return n.items.map(hCe)}async function pCe(e,t,n,i){const r=await Lt(e,{method:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(n),signal:i});if(!r.ok)throw new Error(await dn(r,V("client.saveWorkspaceFailed")));return hCe(await r.json())}function mCe(e,t){return pCe("/web/workspaces","POST",e,t)}function gCe(e,t,n){return pCe(`/web/workspaces/${encodeURIComponent(e)}`,"PATCH",t,n)}async function bCe(e,t){const n=await Lt(`/web/workspaces/${encodeURIComponent(e)}`,{method:"DELETE",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.deleteWorkspaceFailed")))}async function EC(e){const t=await Lt("/web/v3/environments",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadEnvironmentsFailed")));const n=await t.json();if(!Array.isArray(n.items))throw new Error(V("client.invalidEnvironmentList"));return n.items.map(DU)}async function yCe(e,t){const n=await Lt("/web/v3/environment-repositories/inspect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),signal:t});if(!n.ok)throw new Error(await dn(n,V("client.probeRepositoryFailed")));const i=await n.json();if(typeof i.repositoryUrl!="string"||typeof i.ref!="string"||typeof i.commitSha!="string"||!Array.isArray(i.dockerfiles)||!i.dockerfiles.every(r=>typeof r=="string"))throw new Error(V("client.invalidRepositoryProbe"));return i}async function vCe(e,t){const n=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/share-code`,{method:"POST",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.exportEnvironmentCodeFailed")));const i=await n.json();if(typeof i.shareCode!="string"||typeof i.name!="string")throw new Error(V("client.invalidEnvironmentCode"));return i}async function xCe(e,t){const n=await Lt("/web/v3/environment-share-codes/inspect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shareCodes:e}),signal:t});if(!n.ok)throw new Error(await dn(n,V("client.inspectEnvironmentCodeFailed")));const i=await n.json();if(!Array.isArray(i.items))throw new Error(V("client.invalidEnvironmentCodeInspection"));return i.items.map(r=>{if(!r||typeof r!="object")throw new Error(V("client.invalidEnvironmentCodeInspection"));const s=r,a=s.status==="valid"||s.valid===!0?"valid":s.status==="invalid"||s.valid===!1?"invalid":null;if(!Number.isInteger(s.index)||a===null||s.name!==void 0&&typeof s.name!="string"||s.error!==void 0&&typeof s.error!="string")throw new Error(V("client.invalidEnvironmentCodeInspection"));return{index:s.index,status:a,name:s.name??"",error:s.error??""}})}async function wCe(e,t){const n=await Lt("/web/v3/environment-share-codes/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shareCodes:e}),signal:t});if(!n.ok)throw new Error(await dn(n,V("client.importEnvironmentCodeFailed")));const i=await n.json();if(!Array.isArray(i.items))throw new Error(V("client.invalidEnvironmentCodeImport"));return i.items.map(r=>{if(!r||typeof r!="object")throw new Error(V("client.invalidEnvironmentCodeImport"));const s=r;if(!Number.isInteger(s.index)||!(s.status==="created"||s.status==="duplicate"||s.status==="failed")||s.name!==void 0&&typeof s.name!="string"||s.error!==void 0&&typeof s.error!="string")throw new Error(V("client.invalidEnvironmentCodeImport"));return{index:s.index,status:s.status,name:s.name??"",environment:s.environment===void 0||s.environment===null?void 0:DU(s.environment),error:s.error??""}})}async function OCe(e,t,n,i){let r;try{r=await Lt(e,{method:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(n),signal:i})}catch(s){throw s instanceof DOMException&&s.name==="AbortError"?s:s instanceof TypeError?new Error(V("client.studioUnavailable")):s}if(!r.ok)throw new Error(await dn(r,V("client.saveEnvironmentFailed")));return DU(await r.json())}function kCe(e,t){return OCe("/web/v3/environments","POST",e,t)}function SCe(e,t,n){return OCe(`/web/v3/environments/${encodeURIComponent(e)}`,"PATCH",t,n)}async function ECe(e,t){const n=await Lt(`/web/v3/environments/${encodeURIComponent(e)}`,{method:"DELETE",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.deleteEnvironmentFailed")))}async function G$(e,t){const n=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/build`,{method:"POST",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.startEnvironmentBuildFailed")));const i=PU(await n.json());if(!i)throw new Error(V("client.invalidEnvironmentBuild"));return i}async function CCe(e,t,n={}){const i=n.includeLogs?"?includeLogs=true":"",r=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/builds/${encodeURIComponent(t)}${i}`,{signal:n.signal});if(!r.ok)throw new Error(await dn(r,V("client.loadEnvironmentBuildFailed")));const s=PU(await r.json());if(!s)throw new Error(V("client.invalidEnvironmentBuild"));return s}async function TCe(e,t,n){const i=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/builds/${encodeURIComponent(t)}/manifest`,{signal:n});if(!i.ok)throw new Error(await dn(i,V("client.loadEnvironmentManifestFailed")));return dCe(await i.json())}function uY(e){if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironmentResource"));const t=e;if(t.source!=="provided"&&t.source!=="managed"||typeof t.consoleUrl!="string")throw new Error(V("client.invalidEnvironmentResource"));return t}async function ACe(e){const t=await Lt("/web/v3/environment-resources",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadEnvironmentResourcesFailed")));const n=await t.json();if(n.provider!=="volcengine"&&n.provider!=="byteplus"||typeof n.region!="string")throw new Error(V("client.invalidEnvironmentResource"));return{provider:n.provider,region:n.region,codePipeline:uY(n.codePipeline),containerRegistry:uY(n.containerRegistry)}}async function VZe(e,t){const n=await Lt(`/web/system-info/sandbox-tools/${encodeURIComponent(e)}/model-env`,{method:"POST",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.updateCodexSandboxFailed")));const i=await n.json();if(i.kind!=="codex"&&i.kind!=="codex_snapshot"||typeof i.toolId!="string"||typeof i.updated!="boolean")throw new Error(V("client.invalidCodexSandboxUpdate"));return i}async function GI(e){const t=await Lt("/web/identity/user-pools",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadUserPoolsFailed")));const n=await t.json();if(!Array.isArray(n.items))throw new Error(V("client.invalidUserPoolList"));return n.items.map(i=>{if(!i||typeof i!="object"||typeof i.uid!="string"||typeof i.name!="string"||typeof i.domain!="string"||typeof i.region!="string"||typeof i.isCurrent!="boolean")throw new Error(V("client.invalidUserPoolList"));return i})}class dY extends Error{constructor(t,n){super(n),this.status=t,this.name="DeploymentRecoveryHttpError"}}const Qk=new Map;function HZe(e){if(typeof e=="string")return e?{message:e}:null;if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n=typeof t.message=="string"?t.message:typeof t.error=="string"?t.error:"";return n?{message:n,phase:typeof t.phase=="string"?t.phase:void 0,runtimeId:typeof t.runtimeId=="string"?t.runtimeId:void 0,logPath:typeof t.logPath=="string"?t.logPath:void 0}:null}class zk extends Error{constructor(t){super(t.message),this.detail=t,this.name="GithubCicdPipelineError"}}async function kp(e){const t=await e.text().catch(()=>"");if(t)try{const n=JSON.parse(t),i=HZe(n.detail??n.error);if(i)return new zk(i)}catch{return new zk({message:t})}return new zk({message:V("client.syncGithubFailed",{status:e.status})})}async function _Ce(e){const t=await Lt("/web/github-delivery/source-sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project:e.project,githubUrl:e.githubUrl,githubToken:e.githubToken,baseBranch:e.baseBranch,region:e.region,cloudProvider:e.cloudProvider})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function jCe(e){const t=await Lt("/web/github-delivery/cicd-pipeline",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({githubUrl:e.githubUrl,githubToken:e.githubToken,baseBranch:e.baseBranch,runtimeName:e.runtimeName,runtimeId:e.runtimeId,region:e.region,cloudProvider:e.cloudProvider,projectPath:e.projectPath??".",volcengineAccessKey:e.volcengineAccessKey,volcengineSecretKey:e.volcengineSecretKey,volcengineSessionToken:e.volcengineSessionToken??""})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function NCe(e){const t=await Lt("/web/github-delivery/init-main",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project:e.project,githubUrl:e.githubUrl,githubToken:e.githubToken,baseBranch:e.baseBranch,runtimeName:e.runtimeName,runtimeId:e.runtimeId,region:e.region,cloudProvider:e.cloudProvider,projectPath:e.projectPath??".",volcengineAccessKey:e.volcengineAccessKey,volcengineSecretKey:e.volcengineSecretKey,volcengineSessionToken:e.volcengineSessionToken??""})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function qZe(e){const t=await Lt("/web/github-delivery/source-sync/cicd",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pipelineId:e.pipelineId,runtimeName:e.runtimeName,runtimeId:e.runtimeId,region:e.region,cloudProvider:e.cloudProvider,projectPath:e.projectPath??".",volcengineAccessKey:e.volcengineAccessKey,volcengineSecretKey:e.volcengineSecretKey,volcengineSessionToken:e.volcengineSessionToken??""})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function RCe(e){const t=await Lt(`/web/github-cicd/runtime-binding?runtimeId=${encodeURIComponent(e)}`);if(!t.ok)throw await kp(t);const n=await t.json();return n.pipelineId?n:null}async function B_(e){const t=await Lt(`/web/github-delivery/versions?runtimeId=${encodeURIComponent(e)}`);if(!t.ok)throw await kp(t);return t.json()}async function ICe(e){const t=await Lt("/web/github-delivery/rollback-pr",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await kp(t);return t.json()}async function LU(e){const t=await Lt("/web/github-cicd/runtime-binding",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await kp(t);return t.json()}async function PCe(e){const t=await Lt("/web/github-cicd/runtime-sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e.runtimeId,project:e.project})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function Wy(e,t,n,i){var h,m,g,b,v;const r=i==null?void 0:i.taskId,s=r?new AbortController:void 0;r&&s&&Qk.set(r,s);const a=()=>{r&&Qk.get(r)===s&&Qk.delete(r)},l=async y=>{if(jEe(y))throw y;if(!r||!(i!=null&&i.runtimeId)||typeof i.baseRuntimeVersion!="number")throw new D_({taskId:r,cause:y});const w=await uZe({signal:s==null?void 0:s.signal,shouldRetry:x=>!(x instanceof dY)||x.status===404||x.status===408||x.status===429||x.status>=500,load:async x=>{const O=await Lt("/web/deploy-agentkit/status",{method:"POST",headers:{"Content-Type":"application/json"},signal:x,body:JSON.stringify({taskId:r,runtimeId:i.runtimeId,runtimeName:i.runtimeName,appName:i.appName??e,region:n.region,projectName:n.projectName,baseRuntimeVersion:i.baseRuntimeVersion})},{},3e4);if(!O.ok)throw new dY(O.status,await dn(O,V("client.deploymentFailed")));return O.json()}});if(!w)throw new D_({taskId:r,cause:y});return w};let c=null,u=null;try{const y=!!(i!=null&&i.migrationTaskId);(h=i==null?void 0:i.onStage)==null||h.call(i,{level:"info",phase:"upload",message:V(y?"client.validatingMigrationArtifact":"client.uploadingCodePackage"),pct:0}),c=await Lt("/web/deploy-agentkit",{method:"POST",headers:{"Content-Type":"application/json"},signal:s==null?void 0:s.signal,body:JSON.stringify({name:e,files:y?[]:t,config:n,taskId:r,migrationTaskId:i==null?void 0:i.migrationTaskId,runtimeId:i==null?void 0:i.runtimeId,runtimeName:i==null?void 0:i.runtimeName,appName:i==null?void 0:i.appName,editMode:i==null?void 0:i.editMode,draft:i==null?void 0:i.draft,updateEtag:i==null?void 0:i.updateEtag,baseRuntimeVersion:i==null?void 0:i.baseRuntimeVersion,removeRuntimeEnvKeys:i==null?void 0:i.removeRuntimeEnvKeys,mcpSecretValues:i==null?void 0:i.mcpSecretValues,mcpCredentialReuses:i==null?void 0:i.mcpCredentialReuses,sessionStorage:i==null?void 0:i.sessionStorage,minInstance:i==null?void 0:i.minInstance,maxInstance:i==null?void 0:i.maxInstance,createEvaluationSets:i==null?void 0:i.createEvaluationSets,description:lZe((i==null?void 0:i.description)??""),authentication:i==null?void 0:i.authentication,im:i==null?void 0:i.im,envs:i==null?void 0:i.envs,resources:i==null?void 0:i.resources,source:(i==null?void 0:i.source)??(i!=null&&i.migrationTaskId?{kind:"migration",migrationId:i.migrationTaskId}:{kind:"inlineFiles"}),harnessSidecar:i==null?void 0:i.harnessSidecar,environment:i==null?void 0:i.environment})},{},0),(m=i==null?void 0:i.onStage)==null||m.call(i,{level:"success",phase:"upload",message:V(y?"client.migrationArtifactValidated":"client.codePackageUploaded"),pct:100})}catch(y){try{u=await l(y)}finally{a()}}if(c&&!c.ok){const y=await dn(c,V("client.deploymentFailed"));throw a(),new Error(y)}if(c)try{for await(const y of zI(c)){const w=y;if(w&&w.done){u=w;break}w&&w.message&&((g=i==null?void 0:i.onStage)==null||g.call(i,w))}}catch(y){try{u=await l(y)}finally{a()}}if(u)a();else try{u=await l()}finally{a()}if(!u.success){const y=new Error(u.error||V("client.deploymentFailed"));throw _Ee(y)?new D_({taskId:r,cause:y}):y}if(!u.agentName)throw new Error(V("client.deploymentMissingAgentName"));if(!u.runtimeId&&!u.url)throw new Error(V("client.deploymentMissingConnection"));const d=(b=u.runtimeName)!=null&&b.trim()?u.agentName:e,f=((v=u.runtimeName)==null?void 0:v.trim())||u.agentName;return{apikey:u.apikey??"",url:u.url??"",agentName:d,runtimeName:f,runtimeId:u.runtimeId,consoleUrl:u.consoleUrl,region:u.region,version:u.version,warnings:u.warnings,feishuChannel:u.feishuChannel}}async function DCe(e){var n;const t=await Lt("/web/cancel-deploy-agentkit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!t.ok){const i=await t.text().catch(()=>"");throw new Error(i||V("client.cancelDeploymentFailed",{status:t.status}))}(n=Qk.get(e))==null||n.abort(),Qk.delete(e)}async function WZe(e=wU){const t=await Lt(`/web/my-runtimes?region=${encodeURIComponent(e)}`);if(!t.ok)throw new Error(V("client.loadFailed",{status:t.status}));return(await t.json()).runtimes??[]}const HS={title:"AgentKit Studio",logoUrl:""},X$={enabled:!1},U5={studio:!1,version:"",provider:"volcengine",branding:HS,features:{newChat:!0,search:!0,skillCenter:!0,history:!0,addAgent:!0,manageAgents:!0,agentUsage:!1,addAgentkit:!0,generatedAgentTestRun:!0},defaultView:"chat",agentsSource:"local",telemetry:X$};function KZe(e){if(!e||typeof e!="object")return X$;const t=e;if(t.enabled!==!0||!t.studio||typeof t.studio!="object")return X$;const n=t.studio;return{enabled:!0,studio:{deployId:typeof n.deployId=="string"?n.deployId:"",userPoolId:typeof n.userPoolId=="string"?n.userPoolId:"",applicationId:typeof n.applicationId=="string"?n.applicationId:"",functionId:typeof n.functionId=="string"?n.functionId:"",region:typeof n.region=="string"?n.region:"",project:typeof n.project=="string"?n.project:"",version:typeof n.version=="string"?n.version:"",accountId:typeof n.accountId=="string"?n.accountId:"",accountIdResolutionError:typeof n.accountIdResolutionError=="string"?n.accountIdResolutionError:""}}}async function MCe(){var e,t;try{const n=await Lt("/web/ui-config");if(!n.ok)return U5;const i=await n.json(),r=typeof((e=i.branding)==null?void 0:e.logoUrl)=="string"?i.branding.logoUrl:HS.logoUrl,s=i.provider==="byteplus"?"byteplus":"volcengine";return FEe(s),{studio:i.studio??!1,version:typeof i.version=="string"?i.version:"",provider:s,branding:{title:typeof((t=i.branding)==null?void 0:t.title)=="string"?i.branding.title:HS.title,logoUrl:r?ta(r):""},features:{...U5.features,...i.features??{}},defaultView:i.defaultView??"chat",agentsSource:i.agentsSource==="cloud"?"cloud":"local",telemetry:KZe(i.telemetry)}}catch{return U5}}const LCe={role:"user",telemetry:{userId:"",accountId:""},capabilities:{createAgents:!1,createPersonalAgents:!1,manageAgents:!1,runtimeScope:"mine",manageUsers:!1}};async function $Ce(){var n,i,r,s,a,l;const e=await Lt("/web/access");if(!e.ok)throw new Error(V("client.loadPermissionsFailed",{status:e.status}));const t=await e.json();if(!["super_admin","admin","developer","user"].includes(t.role)||typeof((n=t.telemetry)==null?void 0:n.userId)!="string"||t.telemetry.accountId!==void 0&&typeof t.telemetry.accountId!="string"||typeof((i=t.capabilities)==null?void 0:i.createAgents)!="boolean"||typeof((r=t.capabilities)==null?void 0:r.createPersonalAgents)!="boolean"||typeof((s=t.capabilities)==null?void 0:s.manageAgents)!="boolean"||((a=t.capabilities)==null?void 0:a.manageUsers)!==void 0&&typeof t.capabilities.manageUsers!="boolean"||!["all","mine"].includes((l=t.capabilities)==null?void 0:l.runtimeScope))throw new Error(V("client.invalidPermissionResponse"));return t}async function FCe(e,t){const n=new URLSearchParams;e&&n.set("targetVersion",e),t&&n.set("startedAt",String(t));const i=n.size?`?${n.toString()}`:"",r=await Lt(`/web/studio-update${i}`);if(!r.ok)throw new Error(V("client.checkStudioUpdateFailed",{status:r.status}));return await r.json()}async function BCe(){const e=await Lt("/web/studio-update/permissions");if(!e.ok){let t="";try{const n=await e.json();t=typeof n.detail=="string"?n.detail:""}catch{t=""}throw new Error(t||V("client.studioUpdatePreflightFailed",{status:e.status}))}return await e.json()}async function UCe(e){const t=await Lt("/web/studio-update",{method:"POST",headers:{"Content-Type":"application/json","X-VeADK-Studio-Update":"1"},body:JSON.stringify({version:e})},{},hr);if(!t.ok){let n="";try{const i=await t.json();n=typeof i.detail=="string"?i.detail:""}catch{n=""}throw new Error(n||V("client.submitStudioUpdateFailed",{status:t.status}))}return await t.json()}async function QCe({runtimeId:e,region:t,appName:n,page:i=1,pageSize:r=20,signal:s}){const a=new URLSearchParams({runtimeId:e,region:t,appName:n,page:String(i),pageSize:String(r)}),l=await Lt(`/web/agent-usage?${a.toString()}`,{signal:s});if(!l.ok)throw new Error(await dn(l,V("client.loadAgentUsageFailed")));const c=l.headers.get("content-type")||V("client.notProvided"),u=c.toLowerCase();if(!u.includes("application/json")&&!u.includes("+json"))throw new Error(V("client.agentUsageNonJson",{status:l.status,contentType:c})+V("client.checkStudioGateway"));try{return await l.json()}catch{throw new Error(V("client.agentUsageInvalidJson",{status:l.status,contentType:c})+V("client.retryCheckGateway"))}}function Sp(e=""){return`/web/cronjobs${e?`/${encodeURIComponent(e)}`:""}`}async function Y$(e){const t=await Lt(Sp(),{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadCronJobsFailed")));const n=await t.json();return Array.isArray(n)?n:n.items??[]}async function GZe(e,t){const n=await Lt(Sp(e),{signal:t});if(!n.ok)throw new Error(await dn(n,V("client.loadCronJobFailed")));return await n.json()}async function zCe(e){const t=await Lt(Sp(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(await dn(t,V("client.createCronJobFailed")));return await t.json()}async function VCe(e,t){const n=await Lt(`${Sp(e)}/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok)throw new Error(await dn(n,V("client.updateCronJobFailed")));return await n.json()}async function HCe(e,t){const n=t?"enable":"disable",i=await Lt(`${Sp(e)}/${n}`,{method:"POST"});if(!i.ok)throw new Error(await dn(i,V(t?"client.enableCronJobFailed":"client.pauseCronJobFailed")));return await i.json()}async function qCe(e){const t=await Lt(`${Sp(e)}/run`,{method:"POST"});if(!t.ok)throw new Error(await dn(t,V("client.runCronJobFailed")));return await t.json()}async function Z$(e,t){const n=await Lt(`${Sp(e)}/runs`,{signal:t});if(!n.ok)throw new Error(await dn(n,V("client.loadCronHistoryFailed")));const i=await n.json();return Array.isArray(i)?i:i.items??[]}async function WCe(e,t){const n=await Lt(`${Sp(e)}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST"});if(!n.ok)throw new Error(await dn(n,V("client.stopCronRunFailed")));return await n.json()}async function KCe(e){const t=await Lt(Sp(e),{method:"DELETE"});if(!t.ok)throw new Error(await dn(t,V("client.deleteCronJobFailed")))}class $U extends Error{constructor(t,n){super(t),this.status=n,this.name="RuntimeListError"}}async function zw(e={}){const t=new URLSearchParams({scope:e.scope??"all",page_size:String(e.pageSize??30),region:e.region??"all"});e.nextToken&&t.set("next_token",e.nextToken);const n=await Lt(`/web/runtimes?${t.toString()}`,{signal:e.signal});if(!n.ok){const r=await dn(n,V("client.loadRuntimeFailed"));throw new $U(r,n.status)}const i=await n.json();return{runtimes:i.runtimes??[],nextToken:i.nextToken??""}}async function Gx(e,t,n={}){if(n.preferCached){const i=TU(e,t,n.currentVersion),r=ix.get(i);if(r&&r.expiresAt>Date.now())return[...r.apps];r&&ix.delete(i)}try{const i={runtimeId:e,region:t,runtimeVersion:n.currentVersion};return n.retryProbe&&(i.retryProbe=!0),await SC("","",i,n.signal,n.timeoutMs)}catch(i){if(i instanceof Uw||i instanceof po||i instanceof Error)throw i;return null}}async function GCe(e,t){const n=new URLSearchParams({region:t}),i=await Lt(`/web/runtime-tool-channel/${encodeURIComponent(e)}/capabilities?${n.toString()}`);if(!i.ok)throw new po(await dn(i,V("client.loadLocalToolsFailed")),!1,!0);return await i.json()}async function XCe(e,t){const n=new URLSearchParams({region:t}),i=await Lt(`/web/runtime-route-channel/${encodeURIComponent(e)}/connect?${n.toString()}`,{method:"POST"});if(!i.ok)throw new po(await dn(i,V("client.connectDynamicRouteFailed")),!1,!0);return await i.json()}async function YCe(e,t,n={}){const i={runtimeId:e,region:t};n.retryProbe&&(i.retryProbe=!0);const r=await Lt("/.well-known/agent-card.json",{},i),s=await BEe(r);if(s==="runtime_access_denied")throw new Uw;if(s==="runtime_private_endpoint_unreachable")throw new po(MEe());if(["runtime_proxy_connect_error","runtime_proxy_timeout"].includes(s))throw new po(LEe());if(r.status===404)return null;if(r.status===401||r.status===403)throw new po(V("client.a2aProbeDenied"));if(!r.ok)throw new Error(await dn(r,V("client.loadA2aCardFailed")));const a=await r.json().catch(()=>null),l=typeof(a==null?void 0:a.url)=="string"?a.url.trim():"";return l?{name:typeof(a==null?void 0:a.name)=="string"?a.name:"",description:typeof(a==null?void 0:a.description)=="string"?a.description:"",endpoint:l}:null}async function ZCe(e,t){const n=new URLSearchParams({runtimeId:e,region:t}),i=await Lt(`/web/runtime-api-key/reveal?${n.toString()}`,{method:"POST",cache:"no-store"});if(!i.ok)throw new Error(await dn(i,V("client.loadRuntimeApiKeyFailed")));const r=await i.json();if(typeof r.apiKey!="string"||!r.apiKey)throw new Error(V("client.runtimeApiKeyMissing"));return r.apiKey}async function JCe(e,t){const n=await Lt("/web/delete-runtime",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e,region:t})});if(!n.ok){const i=await n.text().catch(()=>"");throw new Error(i||V("client.deleteFailed",{status:n.status}))}}async function eTe({runtimeId:e,region:t,appName:n,etag:i,signal:r}){const s=await Lt("/web/runtime-mcp-credentials",{method:"POST",cache:"no-store",signal:r,headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e,region:t,appName:n,etag:i})});if(!s.ok)throw new Error(await dn(s,V("client.loadMcpCredentialsFailed")));const a=await s.json().catch(()=>null);if(!Array.isArray(a==null?void 0:a.credentials))throw new Error(V("client.invalidMcpCredentials"));return a.credentials.map(l=>{if(!l||typeof l!="object")throw new Error(V("client.invalidMcpCredentials"));const c=l,u={agentName:c.agentName,name:c.name,url:c.url,authTokenEnv:c.authTokenEnv,value:c.value};if(Object.values(u).some(d=>typeof d!="string"))throw new Error(V("client.invalidMcpCredentials"));return u})}function U_({runtimeId:e,region:t,appName:n,currentVersion:i}){return qy(VS,t,e,i??"",(n==null?void 0:n.trim())??"")}async function XZe({runtimeId:e,region:t,appName:n,currentVersion:i,force:r=!1}){const s=new URLSearchParams({runtimeId:e,region:t});n&&s.set("appName",n),i!=null&&s.set("currentVersion",String(i)),r&&s.set("refresh","true");const a=await Lt(`/web/runtime-update-capability?${s.toString()}`);if(!a.ok)throw new Error(await YZe(a));return await a.json()}function XI({runtimeId:e,region:t,appName:n,currentVersion:i,signal:r,force:s=!1}){var u,d;const a={runtimeId:e,region:t,appName:n,currentVersion:i},l=U_(a);if(s&&Vr.delete(l),!s){const f=_g(Vr,l,Qw);if(f)return C2(Promise.resolve(f),r);const h=(u=Vr.get(l))==null?void 0:u.promise;if(h)return C2(h,r);if(n){const m=U_({...a,appName:""}),g=(d=Vr.get(m))==null?void 0:d.promise;if(g){let b;return b=g.then(v=>{var w,x,O,S,k;if(v.recoveryStatus==="preparing")return((w=Vr.get(l))==null?void 0:w.promise)===b&&Vr.delete(l),v;const y=((O=(x=v.agent)==null?void 0:x.appName)==null?void 0:O.trim())??"";return y&&y!==n.trim()?(((S=Vr.get(l))==null?void 0:S.promise)===b&&Vr.delete(l),XI(a)):(((k=Vr.get(l))==null?void 0:k.promise)===b&&Vr.set(l,{value:v,updatedAt:Date.now()}),v)},v=>{var y;throw((y=Vr.get(l))==null?void 0:y.promise)===b&&Vr.delete(l),v}),Vr.set(l,{promise:b,updatedAt:0}),C2(b,r)}}}let c;return c=XZe({...a,force:s}).then(f=>{var h,m,g,b,v;if(f.recoveryStatus==="preparing")return((h=Vr.get(l))==null?void 0:h.promise)===c&&Vr.delete(l),f;if(((m=Vr.get(l))==null?void 0:m.promise)===c){Vr.set(l,{value:f,updatedAt:Date.now()});const y=new Set(["",((b=(g=f.agent)==null?void 0:g.appName)==null?void 0:b.trim())??""]);for(const w of y){const x=U_({...a,appName:w});x!==l&&!((v=Vr.get(x))!=null&&v.promise)&&Vr.set(x,{value:f,updatedAt:Date.now()})}}return f},f=>{var h;throw((h=Vr.get(l))==null?void 0:h.promise)===c&&Vr.delete(l),f}),Vr.set(l,{promise:c,updatedAt:0}),C2(c,r)}function J$({runtimeId:e,region:t,appName:n,currentVersion:i}){return _g(Vr,U_({runtimeId:e,region:t,appName:n,currentVersion:i}),Qw)}function eF(e){return XI(e).then(()=>{},()=>{})}function tF(e,t){if(!e){Vr.clear();return}for(const n of Vr.keys()){const[i,r,s]=n.split("");i===VS&&s===e&&(!t||r===t)&&Vr.delete(n)}}async function YZe(e){const t=await e.json().catch(()=>null),n=typeof(t==null?void 0:t.detail)=="string"?t.detail:"";return e.status===403?V("client.runtimeManageForbidden"):e.status===404?V(n==="runtime_not_found"?"client.runtimeNotFound":"client.runtimeUnavailable"):V("client.checkRuntimeUpdateFailed",{status:e.status})}async function ZZe(e,t){let n=null;for(const i of kC(t)){const r=await Lt(`/web/runtime-detail?runtimeId=${encodeURIComponent(e)}®ion=${encodeURIComponent(i)}`);if(r.ok)return r.json();n=new Error(await dn(r,V("client.loadRuntimeDetailFailed")))}throw n??new Error(V("client.loadRuntimeDetailFailed"))}async function FU(e,t="cn-beijing",n={}){const i=qy(e,t||"cn-beijing"),r=_g(vb,i,Qw);if(!n.force&&r)return r;const s=vb.get(i);if(!n.force&&(s!=null&&s.promise))return s.promise;const a=ZZe(e,t).then(l=>AU(vb,i,l));vb.set(i,{...s,promise:a,updatedAt:(s==null?void 0:s.updatedAt)??0});try{return await a}finally{const l=vb.get(i);(l==null?void 0:l.promise)===a&&vb.set(i,{value:l.value,updatedAt:l.updatedAt})}}function tTe(e,t="cn-beijing"){return _g(vb,qy(e,t||"cn-beijing"),Qw)}function nTe(e,t="cn-beijing"){FU(e,t).catch(()=>{})}async function Vk(e){const t=await Lt("/web/generated-agent-projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({draft:e})});if(!t.ok)throw new Error(await dn(t,V("client.generateProjectFailed")));return t.json()}const JZe=19e4,eJe=12e4;async function iTe(e){const t=await Lt("/web/generated-agent-drafts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({requirement:e})},{},JZe);if(!t.ok)throw new Error(await dn(t,V("client.generateAgentConfigFailed")));return QI(t,V("client.generateAgentConfigFailed"))}async function rTe(e,t){const n=await Lt("/web/generated-agent-test-runs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({draft:e,runtimeId:t==null?void 0:t.runtimeId,runtimeRegion:t==null?void 0:t.region,mcpCredentialReuses:t==null?void 0:t.mcpCredentialReuses})},{},eJe);if(!n.ok)throw new Error(await dn(n,V("client.createDebugRunFailed")));return QI(n,V("client.createDebugRunFailed"))}async function sTe(e,t){const n=await Lt(`/web/generated-agent-test-runs/${e}/sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:t})});if(!n.ok)throw new Error(await dn(n,V("client.createDebugSessionFailed")));return(await QI(n,V("client.createDebugSessionFailed"))).id}async function oTe(e,t){const n=await Lt(`/web/generated-agent-test-runs/${encodeURIComponent(e)}/trace/session/${encodeURIComponent(t)}`);if(!n.ok)throw new Error(await dn(n,V("client.loadDebugTraceFailed")));const i=await QI(n,V("client.loadDebugTraceFailed"));if(!Array.isArray(i))throw new Error(V("client.invalidDebugTrace"));return i}async function*aTe({runId:e,userId:t,sessionId:n,text:i,signal:r}){const s=i.trim()?[{text:i}]:[],a=rCe(r);let l;try{l=await Lt(`/web/generated-agent-test-runs/${e}/run_sse`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user_id:t,session_id:n,new_message:{role:"user",parts:s},streaming:!0}),signal:a.signal},{},0)}catch(c){throw a.cleanup(),a.timedOut()?new Error(Kx()):c}if(!l.ok)throw a.cleanup(),new Error(await dn(l,V("client.debugRunFailed")));try{for await(const c of zI(l))a.clearDeadline(),yield c}catch(c){throw a.timedOut()?new Error(Kx()):c}finally{a.cleanup()}}async function av(e){const t=await Lt(`/web/generated-agent-test-runs/${e}`,{method:"DELETE"});if(!t.ok&&t.status!==404)throw new Error(await dn(t,V("client.cleanupDebugRunFailed")))}function lTe(e){if(!e||typeof e!="object")throw new Error(V("client.invalidSandboxVersion"));const t=e;if(typeof t.toolId!="string"||typeof t.error!="string")throw new Error(V("client.invalidSandboxVersion"));if(!t.error&&(t.provider!=="volcengine"&&t.provider!=="byteplus"||typeof t.region!="string"||typeof t.status!="string"||typeof t.currentImage!="string"||typeof t.latestImage!="string"||typeof t.needsImageUpdate!="boolean"||typeof t.canUpdate!="boolean"||typeof t.needsModelEnvUpdate!="boolean"||typeof t.canUpdateModelEnv!="boolean"||typeof t.modelEnvError!="string"))throw new Error(V("client.invalidSandboxVersion"));return t}async function cTe(e){const t=await Lt("/web/system-info/sandbox-tools/updates",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadSandboxVersionsFailed")));const n=await t.json();if(!Array.isArray(n.tools))throw new Error(V("client.invalidSandboxVersion"));return n.tools.map(lTe)}async function uTe(e){const t=await Lt(`/web/system-info/sandbox-tools/${encodeURIComponent(e)}/update`,{method:"POST"},{},33e4);if(!t.ok)throw new Error(await dn(t,V("client.updateSandboxFailed")));const n=await t.json();if(typeof n.updated!="boolean")throw new Error(V("client.invalidSandboxUpdate"));return{updated:n.updated,state:lTe(n.state)}}const tJe=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_SITE_BRANDING:HS,DEFAULT_STUDIO_ACCESS:LCe,GithubCicdPipelineError:zk,RuntimeAccessDeniedError:Uw,RuntimeListError:$U,RuntimeProbeError:po,attachGithubDeliveryCicdToSourceSync:qZe,bindGithubCicdRuntime:LU,buildEnvironment:G$,cancelAgentkitDeployment:DCe,cancelCronJobRun:WCe,checkRuntimeNameAvailability:KI,clearMessageFeedbackCache:NEe,clearRemoteApps:IEe,componentSearch:tCe,createCronJob:zCe,createEnvironment:kCe,createGeneratedAgentTestRun:rTe,createGeneratedAgentTestSession:sTe,createGithubCicdPipeline:_Ce,createGithubDeliveryCicdPipeline:jCe,createGithubDeliveryRollbackPr:ICe,createSession:UEe,createWorkspace:mCe,deleteAgentFeedbackCases:WEe,deleteCronJob:KCe,deleteEnvironment:ECe,deleteGeneratedAgentTestRun:av,deleteMedia:$_,deleteRuntime:JCe,deleteSession:V$,deleteSessionMedia:H$,deleteWorkspace:bCe,deployAgentkitProject:Wy,downloadArtifact:jU,ensureRuntimeRouteChannel:XCe,exportEnvironmentShareCode:vCe,fetchRemoteApps:SC,generateAgentDraftFromRequirement:iTe,generateAgentProject:Vk,getAgentFeedbackCases:WI,getAgentInfo:W$,getAgentOptimizations:zEe,getAgentUsage:QCe,getAutomaticEvaluationStatuses:z$,getCachedAgentFeedbackCases:VEe,getCachedRuntimeAgentInfo:JEe,getCachedRuntimeDetail:tTe,getCachedRuntimeUpdateCapability:J$,getCronJob:GZe,getEnvironmentBuild:CCe,getEnvironmentManifest:TCe,getEnvironmentResources:ACe,getGeneratedAgentTestTrace:oTe,getGithubCicdRuntimeBinding:RCe,getGithubDeliveryVersions:B_,getMediaCapabilities:FZe,getMyRuntimes:WZe,getRuntimeAgentInfo:RU,getRuntimeDetail:FU,getRuntimeMcpCredentials:eTe,getRuntimeStudioToolCapabilities:GCe,getRuntimeUpdateCapability:XI,getRuntimes:zw,getSandboxImageUpdates:cTe,getSession:qI,getSessionTrace:kN,getStudioAccess:$Ce,getStudioUpdatePermissions:BCe,getStudioUpdateStatus:FCe,getSystemInfo:cCe,getUiConfig:MCe,httpErrorMessage:dn,importEnvironmentShareCodes:wCe,initializeGithubDeliveryMain:NCe,inspectEnvironmentRepository:yCe,inspectEnvironmentShareCodes:xCe,invalidateRuntimeUpdateCapabilityCache:tF,listApps:DEe,listCronJobRuns:Z$,listCronJobs:Y$,listDeploymentResources:sCe,listEnvironments:EC,listIdentityUserPools:GI,listModelApiKeys:CU,listModelOptions:Bw,listSessions:_U,listWorkspaces:MU,mediaContentUrl:YEe,parseEnvironmentManifest:dCe,parseEnvironmentShareCodes:IU,parsePreparedSessionEnvironmentMounts:oCe,prefetchAgentFeedbackCases:LZe,prefetchRuntimeAgentInfo:eCe,prefetchRuntimeDetail:nTe,prefetchRuntimeUpdateCapability:eF,prepareSessionEnvironmentMounts:aCe,previewArtifact:NU,probeRuntimeA2a:YCe,probeRuntimeApps:Gx,refreshAgentFeedbackCases:HEe,registerRemoteApp:REe,revealModelApiKey:PEe,revealRuntimeApiKey:ZCe,runCronJobNow:qCe,runGeneratedAgentTestSSE:aTe,runSSE:K$,runSseEmptyResponseError:iCe,runSseFirstEventTimeoutError:Kx,runSseIncompleteResponseError:F_,runtimeRegionCandidates:kC,setClientCloudProvider:FEe,setCronJobEnabled:HCe,startStudioUpdate:UCe,studioFetch:pn,submitIssueFeedback:q$,submitMessageFeedback:QEe,syncGithubCicdRuntime:PCe,updateCodexSandboxToolModelEnv:VZe,updateCronJob:VCe,updateEnvironment:SCe,updateSandboxTool:uTe,updateWorkspace:gCe,uploadMedia:GEe,upsertCachedAgentFeedbackCase:L_,webSearch:nCe,writeEnvironmentShareCode:lCe},Symbol.toStringTag,{value:"Module"})),nJe="/web/sandbox/sessions",fY="/web/sandbox/codex-project-handoff",hY=3e4,Q5=33e4,iJe=6e4,rJe=6e5,rO=15e3,Oh=6e4,sJe=33e4,pY=3e4,oJe=60*60,nF=40;function YI(e){const t=e.trim().toLowerCase();return["ready","running","wakeable"].includes(t)?"ready":t}function BU(e){switch(e.trim().toLowerCase()){case"ready":return V("sandbox.status.ready");case"wakeable":return V("sandbox.status.wakeable");case"creating":return V("sandbox.status.creating");case"starting":case"initializing":return V("sandbox.status.starting");case"pending":return V("sandbox.status.pending");case"running":return V("sandbox.status.running");case"failed":case"error":return V("sandbox.status.failed");case"stopped":return V("sandbox.status.stopped");case"expired":return V("sandbox.status.expired");case"deleting":return V("sandbox.status.deleting");case"deleted":return V("sandbox.status.deleted");default:return V("sandbox.status.unknown")}}function Yr(e){const t=Ll(e);return t.has("Accept")||t.set("Accept","application/json"),t}class UU extends Error{constructor(n,i={}){var r;super(n);Jt(this,"code");Jt(this,"retryable");Jt(this,"publicMessage");Jt(this,"httpStatus");this.name="SandboxServiceError",this.code=i.code??"",this.retryable=i.retryable===!0,this.publicMessage=((r=i.publicMessage)==null?void 0:r.trim())||n,this.httpStatus=i.httpStatus}}function aJe(e){return e instanceof UU?e.publicMessage:e instanceof Error&&e.name==="TimeoutError"?V("sandbox.developmentTimeout"):e instanceof TypeError?V("sandbox.developmentDisconnected"):V("sandbox.developmentFailed")}async function Es(e,t){const n=await e.text().catch(()=>"");let i={};try{i=JSON.parse(n)}catch{const d=V("common.fallbackWithHttpStatus",{fallback:t,status:e.status});return new Error(n?V("common.fallbackWithDetail",{fallback:d,detail:n}):d)}const r=i.detail,s=r&&typeof r=="object"?r:i,a=r&&typeof r=="object"&&"message"in r?r.message:r??i.error??i.message,l=typeof a=="string"?a:a==null?"":JSON.stringify(a),c=V("common.fallbackWithHttpStatus",{fallback:t,status:e.status}),u=l?V("common.fallbackWithDetail",{fallback:c,detail:l}):c;return new UU(u,{code:typeof s.code=="string"?s.code:"",retryable:s.retryable===!0,publicMessage:l||c,httpStatus:e.status})}async function mY(e,t){const n=await e.text().catch(()=>"");try{return JSON.parse(n)}catch{throw new Error(V("sandbox.invalidStudioResponse",{fallback:t}))}}function eb(e,t="codex",n=e.toolName==="intelligent-development"){if(!e.sessionId||!e.status)throw new Error(V("sandbox.invalidSession"));return{resourceType:"session",id:e.sessionId,toolName:t,userSessionId:e.userSessionId??"",displayName:e.displayName??"",status:e.status,createdAt:e.createdAt??"",expireAt:e.expireAt??"",persistent:e.persistent!==!1,toolType:e.toolType??"",intelligentDevelopment:n,createdBy:e.createdBy??"",region:e.region??"",isMine:e.isMine===!0,threadId:e.threadId??"",cwd:e.cwd??"",workspaceLocked:e.workspaceLocked===!0,busy:e.busy===!0,...typeof e.model=="string"?{model:e.model}:{},permissions:ZI(e.permissions),...e.conversation===void 0?{}:{restoredConversation:xb(e.conversation)}}}function gY(e,t="codex"){if(!e.snapshotId||!e.status)throw new Error(V("sandbox.invalidSnapshot"));return{resourceType:"snapshot",id:e.snapshotId,snapshotId:e.snapshotId,sourceSessionId:e.sessionId??"",toolName:t,userSessionId:e.userSessionId??"",displayName:e.displayName??"",status:e.status,snapshotStatus:e.snapshotStatus??"Unknown",reason:e.reason??"",createdAt:e.createdAt??"",createdBy:e.createdBy??"",region:e.region??"",isMine:e.isMine===!0}}function bY(e,t){if((t==null?void 0:t.autoResumeSnapshots)===void 0)return e;const n=new URLSearchParams({autoResumeSnapshots:String(t.autoResumeSnapshots)});return`${e}?${n.toString()}`}const sO={approvalPolicy:"on-request",approvalsReviewer:"user",sandboxMode:"workspace-write",networkAccess:!1};function ZI(e){if(!e||typeof e!="object")return{...sO};const t=e,n=t.approvalPolicy,i=t.approvalsReviewer,r=t.sandboxMode;return{approvalPolicy:n==="untrusted"||n==="on-request"||n==="never"?n:sO.approvalPolicy,approvalsReviewer:i==="user"||i==="auto_review"?i:sO.approvalsReviewer,sandboxMode:r==="read-only"||r==="workspace-write"||r==="danger-full-access"?r:sO.sandboxMode,networkAccess:typeof t.networkAccess=="boolean"?t.networkAccess:sO.networkAccess}}function yY(e){if(!e||typeof e!="object")throw new Error(V("sandbox.invalidSettings"));const t=e;return{threadId:typeof t.threadId=="string"?t.threadId:"",cwd:typeof t.cwd=="string"?t.cwd:"",...typeof t.model=="string"?{model:t.model}:{},workspaceLocked:t.workspaceLocked===!0,busy:t.busy===!0,permissions:ZI(t.permissions)}}function uo(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function lJe(e){const t=uo(e);if(!(!t||typeof t.id!="string"||!t.id))return{id:t.id,displayName:typeof t.displayName=="string"?t.displayName:t.id,description:typeof t.description=="string"?t.description:"",isDefault:t.isDefault===!0}}function cJe(e){const t=uo(e);if(!(!t||typeof t.id!="string"||!t.id||typeof t.name!="string"||!t.name))return{id:t.id,name:t.name,description:typeof t.description=="string"?t.description:""}}function dTe(e){const t=uo(e);if(!(!t||typeof t.id!="string"||!t.id))return{id:t.id,...typeof t.name=="string"&&t.name?{name:t.name}:{},preview:typeof t.preview=="string"?t.preview:"",cwd:typeof t.cwd=="string"?t.cwd:"",modelProvider:typeof t.modelProvider=="string"?t.modelProvider:"",createdAt:typeof t.createdAt=="number"&&Number.isFinite(t.createdAt)?t.createdAt:0,updatedAt:typeof t.updatedAt=="number"&&Number.isFinite(t.updatedAt)?t.updatedAt:0,status:typeof t.status=="string"?t.status:"unknown"}}function xb(e){const t=uo(e),n=dTe(t==null?void 0:t.thread);if(!t||!n||typeof t.threadId!="string"||!Array.isArray(t.messages))throw new Error(V("sandbox.invalidThreadSnapshot"));const i=t.messages.flatMap(r=>{const s=uo(r);if(!s||typeof s.id!="string"||s.role!=="user"&&s.role!=="assistant"||typeof s.content!="string"||typeof s.timestamp!="number")return[];const a=Array.isArray(s.skillNames)?s.skillNames.filter(c=>typeof c=="string"&&!!c):[],l=Array.isArray(s.images)?s.images.flatMap(c=>{const u=uo(c);return!u||typeof u.mimeType!="string"||!u.mimeType.startsWith("image/")||typeof u.data!="string"||!u.data?[]:[{mimeType:u.mimeType,data:u.data,...typeof u.name=="string"&&u.name?{name:u.name}:{},...typeof u.alt=="string"&&u.alt?{alt:u.alt}:{}}]}):[];return[{id:s.id,role:s.role,content:s.content,timestamp:s.timestamp,...a.length?{skillNames:a}:{},...l.length?{images:l}:{}}]});return{thread:n,threadId:t.threadId,messages:i,...typeof t.model=="string"?{model:t.model}:{},...typeof t.cwd=="string"?{cwd:t.cwd}:{},workspaceLocked:t.workspaceLocked===!0,permissions:ZI(t.permissions)}}function iF(e){if(!e||typeof e!="object")return;const t=e;if(![t.totalTokens,t.inputTokens,t.cachedInputTokens,t.outputTokens,t.reasoningOutputTokens].some(i=>typeof i!="number"||!Number.isFinite(i)||i<0))return{totalTokens:Math.trunc(t.totalTokens),inputTokens:Math.trunc(t.inputTokens),cachedInputTokens:Math.trunc(t.cachedInputTokens),outputTokens:Math.trunc(t.outputTokens),reasoningOutputTokens:Math.trunc(t.reasoningOutputTokens)}}function uJe(e){const t=iF(e.usage);if(!t||typeof e.turnId!="string")return;const n=iF(e.threadTotal),i=e.modelContextWindow;return{turnId:e.turnId,usage:t,...n?{threadTotal:n}:{},...typeof i=="number"&&Number.isFinite(i)&&i>=0?{modelContextWindow:Math.trunc(i)}:{}}}function dJe(e){return typeof e.id!="string"||e.kind!=="command"&&e.kind!=="file"||typeof e.method!="string"?null:{id:e.id,kind:e.kind,method:e.method,...typeof e.reason=="string"?{reason:e.reason}:{},...typeof e.command=="string"?{command:e.command}:{},...typeof e.cwd=="string"?{cwd:e.cwd}:{},...typeof e.grantRoot=="string"?{grantRoot:e.grantRoot}:{},...e.changes!==void 0?{changes:e.changes}:{},...typeof e.threadId=="string"?{threadId:e.threadId}:{},...typeof e.turnId=="string"?{turnId:e.turnId}:{},...typeof e.itemId=="string"?{itemId:e.itemId}:{}}}function fTe(e={}){let t="";const n=[],i=new Map,r=new Map;let s,a;function l(){var h;const f=s?[...n,s]:n;(h=e.onBlocks)==null||h.call(e,[...f])}function c(f){t+=f;const h=n[n.length-1],m=n.length-1,g=[...i.values()].includes(m);(h==null?void 0:h.kind)==="text"&&!g?n[m]={...h,text:h.text+f}:n.push({kind:"text",text:f}),l()}function u(f){if(typeof f.id!="string"||f.kind!=="thinking"&&f.kind!=="commentary"&&f.kind!=="tool"||f.status!=="running"&&f.status!=="done"&&f.status!=="error")return;const h=f.status!=="running";let m;if(f.kind==="thinking")m={kind:"thinking",text:typeof f.text=="string"?f.text:"",done:h};else if(f.kind==="commentary"){if(typeof f.text!="string"||!f.text)return;m={kind:"text",text:f.text}}else{if(typeof f.name!="string"||!f.name)return;m={kind:"tool",name:f.name,args:f.args,response:f.response,status:f.status==="error"?"failed":h?"completed":"running",done:h}}m={...m,id:f.id,...typeof f.itemType=="string"?{itemType:f.itemType}:{},...typeof f.phase=="string"?{phase:f.phase}:{},...typeof f.durationMs=="number"?{durationMs:f.durationMs}:{}};const g=i.get(f.id);g===void 0?(i.set(f.id,n.length),n.push(m)):n[g]=m,l()}function d(f){var b,v,y,w;let h="message";const m=[];for(const x of f.split(/\r?\n/))x.startsWith("event:")&&(h=x.slice(6).trim()),x.startsWith("data:")&&m.push(x.slice(5).trimStart());if(m.length===0)return;let g;try{g=JSON.parse(m.join(`
-`))}catch{throw new Error(V("sandbox.invalidConversationResponse"))}if(h==="error"){const x=typeof g.message=="string"&&g.message?g.message:V("sandbox.conversationFailed");throw new UU(x,{code:typeof g.code=="string"?g.code:"",retryable:g.retryable===!0,publicMessage:x})}if(h==="progress"&&typeof g.text=="string"&&(s=g.text?{kind:"progress",text:g.text}:void 0,l()),["activity","delta","tool_output","tool_progress","plan","diff"].includes(h)&&(s=void 0),h==="activity"&&u(g),(h==="tool_output"||h==="tool_progress")&&typeof g.id=="string"){const x=i.get(g.id),O=x===void 0?void 0:n[x];if((O==null?void 0:O.kind)==="tool"&&x!==void 0&&typeof g.text=="string"){const S=uo(O.response)||{};n[x]=h==="tool_progress"?{...O,progressText:g.text}:{...O,response:{...S,output:(g.snapshot?"":String(S.output||""))+g.text}},l()}}if((h==="plan"||h==="diff")&&typeof g.id=="string"){const x=typeof g.text=="string"?g.text:"",O=Array.isArray(g.items)?g.items:Array.isArray(g.plan)?g.plan:[],S=h==="diff"?{kind:"diff",id:g.id,text:x,done:g.status==="done"}:{kind:"plan",id:g.id,title:V("developmentRuns.plan"),summary:x,done:g.status==="done",items:O.flatMap(C=>{const E=uo(C);if(!E||typeof(E.text??E.step)!="string")return[];const R=E.status==="inProgress"?"in_progress":E.status;return[{text:String(E.text??E.step),status:R==="completed"||R==="failed"||R==="in_progress"?R:"pending"}]})},k=i.get(g.id);k===void 0?(i.set(g.id,n.length),n.push(S)):n[k]=S,l()}if(h==="development.source_ready"||h==="development.succeeded"){const x=uo(g.payload),O=uo(x==null?void 0:x.delivery),S=h==="development.succeeded";if(O&&typeof O.sessionId=="string"&&typeof O.artifactSha256=="string"&&typeof O.validationReportSha256=="string"&&typeof O.agentName=="string"&&typeof O.entryPoint=="string"&&typeof O.fileCount=="number"&&typeof O.artifactSize=="number"&&typeof O.validatedAt=="string"&&O.deployable===!0&&O.verified===S&&typeof O.validationSummary=="string"&&Array.isArray(O.gateSummary)&&O.gateSummary.every(k=>typeof k=="string")){const k={kind:"delivery",value:{sessionId:O.sessionId,...typeof O.projectId=="string"&&typeof O.versionId=="string"?{projectId:O.projectId,versionId:O.versionId,...O.parentVersionId===null||typeof O.parentVersionId=="string"?{parentVersionId:O.parentVersionId}:{}}:{},artifactSha256:O.artifactSha256,validationReportSha256:O.validationReportSha256,agentName:O.agentName,entryPoint:O.entryPoint,fileCount:O.fileCount,artifactSize:O.artifactSize,validatedAt:O.validatedAt,gateSummary:O.gateSummary,deployable:O.deployable,verified:O.verified,validationSummary:O.validationSummary}},C=n.findIndex(E=>E.kind==="delivery"&&E.value.sessionId===O.sessionId&&E.value.artifactSha256===O.artifactSha256&&E.value.validationReportSha256===O.validationReportSha256);C===-1?n.push(k):n[C]=k,l()}}if(h==="approval"){const x=dJe(g);x&&((b=e.onApproval)==null||b.call(e,x))}if(h==="usage"){const x=uJe(g);x&&(a=x,(v=e.onUsage)==null||v.call(e,x))}if(h==="approval_resolved"&&typeof g.approvalId=="string"&&((y=e.onApprovalResolved)==null||y.call(e,g.approvalId)),h==="delta"&&typeof g.text=="string")if(typeof g.id=="string"&&g.id){const x=r.get(g.id),O=x===void 0?void 0:n[x],S=((w=uo(g))==null?void 0:w.snapshot)===!0;(O==null?void 0:O.kind)==="text"?n[x]={...O,phase:typeof g.phase=="string"&&g.phase?g.phase:O.phase,text:S?O.text.startsWith(g.text)?O.text:g.text:O.text+g.text}:(r.set(g.id,n.length),n.push({kind:"text",text:g.text,id:g.id,itemType:typeof g.itemType=="string"?g.itemType:void 0,phase:typeof g.phase=="string"?g.phase:void 0})),t=n.filter(k=>k.kind==="text").map(k=>k.text).join(""),l()}else c(g.text);if(h==="done"&&!t&&typeof g.text=="string"&&c(g.text),h==="done"){for(let x=0;x({text:t,blocks:n.map(f=>({...f})),...a?{usage:a}:{}})}}async function fJe(e,t={}){if(!e.body)throw new Error(V("sandbox.emptyConversationResponse"));const n=e.body.getReader(),i=new TextDecoder;let r="";const s=fTe(t);for(;;){const{done:l,value:c}=await n.read();r+=i.decode(c,{stream:!l});const u=r.split(/\r?\n\r?\n/);if(r=u.pop()??"",u.forEach(s.consumeFrame),l)break}r.trim()&&s.consumeFrame(r),s.consumeFrame(`event: done
-data: {}`);const a=s.result();if(a.blocks.length===0)throw new Error(V("sandbox.emptyReply"));return a}async function jc(e,t,n,{method:i="GET",body:r,options:s={},fallback:a}){if(!t)throw new Error(V("sandbox.missingSession"));const l=await pn(`${e}/${encodeURIComponent(t)}/${n}`,{method:i,headers:Yr(r===void 0?void 0:{"Content-Type":"application/json"}),...r===void 0?{}:{body:JSON.stringify(r)},signal:s.signal},Oh);if(!l.ok)throw await Es(l,a);return l.json()}function hTe(e,t={}){return{async listSessions(n={}){const i=await pn(bY(e,n),{method:"GET",headers:Yr(),signal:n.signal},hY);if(!i.ok)throw await Es(i,V("sandbox.listCodexFailed"));const r=await i.json();if(!Array.isArray(r.sessions))throw new Error(V("sandbox.invalidSessionList"));if(r.snapshots!==void 0&&!Array.isArray(r.snapshots))throw new Error(V("sandbox.invalidSnapshotList"));return[...r.sessions.map(s=>eb(s,"codex",t.intelligentDevelopment)),...(r.snapshots??[]).map(s=>gY(s))]},async startSession(n={}){var s,a;const i=((s=n.displayName)==null?void 0:s.trim())??"",r=await pn(e,{method:"POST",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({displayName:t.textOnly&&n.projectId?Array.from(i).slice(0,nF).join(""):i,...(a=n.modelId)!=null&&a.trim()?{modelId:n.modelId.trim()}:{},...t.textOnly&&n.projectId?{projectId:n.projectId,...n.baseVersionId?{baseVersionId:n.baseVersionId}:{}}:{},...t.textOnly?{}:{persistent:n.persistent??!0},...n.diskGb!==void 0?{diskGb:n.diskGb}:{}}),signal:n.signal},Q5);if(!r.ok)throw await Es(r,V("sandbox.startFailed"));return eb(await r.json(),"codex",t.intelligentDevelopment)},async listAgentSessions(n,i={}){const r=await pn(bY(`/web/${n}/sessions`,i),{method:"GET",headers:Yr(),signal:i.signal},hY);if(!r.ok)throw await Es(r,V("sandbox.listAgentFailed",{kind:n}));const s=await r.json();if(!Array.isArray(s.sessions))throw new Error(V("sandbox.invalidKindSessionList",{kind:n}));if(s.snapshots!==void 0&&!Array.isArray(s.snapshots))throw new Error(V("sandbox.invalidKindSnapshotList",{kind:n}));return[...s.sessions.map(a=>eb(a,n)),...(s.snapshots??[]).map(a=>gY(a,n))]},async startAgentSession(n,i={}){var s;const r=await pn(`/web/${n}/sessions`,{method:"POST",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({displayName:((s=i.displayName)==null?void 0:s.trim())??"",persistent:i.persistent??!0,...i.diskGb!==void 0?{diskGb:i.diskGb}:{}}),signal:i.signal},Q5);if(!r.ok)throw await Es(r,V("sandbox.createAgentFailed",{kind:n}));return eb(await r.json(),n)},async openAgentSession(n,i,r={}){if(!i)throw new Error(V("sandbox.missingSessionToOpen"));const s=await pn(`/web/${n}/sessions/${encodeURIComponent(i)}/open`,{method:"POST",headers:Yr(),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.openAgentFailed",{kind:n}));const a=await s.json();if(typeof a.webuiUrl!="string"||!a.webuiUrl.startsWith("/"))throw new Error(V("sandbox.invalidAgentHomeUrl",{kind:n}));return{session:eb(a,n),kind:n,webuiUrl:ta(a.webuiUrl)}},async launchAgentTerminal(n,i,r={}){if(!i)throw new Error(V("sandbox.missingSessionForTerminal"));const s=await pn(`/web/${n}/sessions/${encodeURIComponent(i)}/terminal`,{method:"POST",headers:Yr(),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.openTerminalFailed",{kind:n}));const a=await s.json();return{url:pTe(a.url,`${n} Terminal`),...typeof a.shellSessionId=="string"?{shellSessionId:a.shellSessionId}:{}}},async deleteAgentSession(n,i,r={}){if(!i)return;const s=await pn(`/web/${n}/sessions/${encodeURIComponent(i)}`,{method:"DELETE",headers:Yr(),signal:r.signal},rO);if(!s.ok&&s.status!==404)throw await Es(s,V("sandbox.deleteAgentFailed",{kind:n}))},async resumeSnapshot(n,i,r={}){if(!i)throw new Error(V("sandbox.missingSnapshot"));const s=n==="codex"?"/web/sandbox":`/web/${n}`,a=await pn(`${s}/snapshots/${encodeURIComponent(i)}/resume`,{method:"POST",headers:Yr(),signal:r.signal},Q5);if(!a.ok)throw await Es(a,V("sandbox.resumeSnapshotFailed"));return eb(await a.json(),n)},async deleteSnapshot(n,i,r={}){if(!i)return;const s=n==="codex"?"/web/sandbox":`/web/${n}`,a=await pn(`${s}/snapshots/${encodeURIComponent(i)}`,{method:"DELETE",headers:Yr(),signal:r.signal},rO);if(!a.ok&&a.status!==404)throw await Es(a,V("sandbox.deleteSnapshotFailed"))},async connectSession(n,i={}){if(!n)throw new Error(V("sandbox.missingSessionToConnect"));const r=await pn(`${e}/${encodeURIComponent(n)}/connect`,{method:"POST",headers:Yr({"Content-Type":"application/json"}),signal:i.signal},iJe);if(!r.ok)throw await Es(r,V("sandbox.connectCodexFailed"));const s=eb(await r.json(),"codex",t.intelligentDevelopment);if(s.status.toLowerCase()!=="ready")throw new Error(V("sandbox.sessionNotReady",{status:s.status}));return s},async sendMessage(n,i={}){var s;if(!n.sessionId||!n.text.trim())throw new Error(V("sandbox.invalidMessage"));const r=await pn(`${e}/${encodeURIComponent(n.sessionId)}/messages`,{method:"POST",headers:Yr({Accept:"text/event-stream","Content-Type":"application/json"}),body:JSON.stringify({message:n.text,...!t.textOnly&&((s=n.skillIds)!=null&&s.length)?{skillIds:n.skillIds}:{}}),signal:i.signal},t.messageTimeoutMs??rJe);if(!r.ok)throw await Es(r,V("sandbox.conversationFailed"));return fJe(r,i)},async interruptSession(n,i={}){if(!n)return;const r=await pn(`${e}/${encodeURIComponent(n)}/interrupt`,{method:"POST",headers:Yr(),signal:i.signal},t.interruptTimeoutMs??rO);if(!r.ok&&![404,409].includes(r.status))throw await Es(r,V("sandbox.interruptFailed"))},async getStatus(n,i={}){const r=await jc(e,n,"status",{options:i,fallback:V("sandbox.getStatusFailed")}),s=yY(r),a=uo(r),l=iF(a==null?void 0:a.threadTotal),c=a==null?void 0:a.modelContextWindow;return{...s,...l?{threadTotal:l}:{},...typeof c=="number"&&Number.isFinite(c)&&c>=0?{modelContextWindow:Math.trunc(c)}:{}}},async getEndpoint(n,i={}){const r=uo(await jc(e,n,"endpoint",{options:i,fallback:V("sandbox.getEndpointFailed")}));if(typeof(r==null?void 0:r.endpoint)!="string"||!r.endpoint.trim())throw new Error(V("sandbox.invalidEndpoint"));return{endpoint:r.endpoint,sessionId:typeof r.sessionId=="string"?r.sessionId:n,...typeof r.expireAt=="string"?{expireAt:r.expireAt}:{}}},async createCodexProjectHandoffPairing(n={}){const i=await pn(`${fY}/pairings`,{method:"POST",headers:Yr({Accept:"application/json","Content-Type":"application/json"}),body:JSON.stringify({ttlSeconds:oJe}),signal:n.signal},pY);if(!i.ok)throw await Es(i,V("sandbox.createHandoffPairingFailed"));const r=uo(await mY(i,V("sandbox.createHandoffPairingFailed")));if(typeof(r==null?void 0:r.pairingCode)!="string"||!r.pairingCode.trim()||typeof r.expireAt!="string"||!r.expireAt.trim())throw new Error(V("sandbox.invalidHandoffPairing"));const s=typeof r.studioUrl=="string"&&r.studioUrl.trim()?r.studioUrl.trim():window.location.origin;return{pairingCode:r.pairingCode,expireAt:r.expireAt,studioUrl:s}},async getCodexProjectHandoffStatus(n,i={}){const r=await pn(`${fY}/pairings/${encodeURIComponent(n)}`,{headers:Yr({Accept:"application/json"}),signal:i.signal},pY);if(!r.ok)throw await Es(r,V("sandbox.getHandoffStatusFailed"));const s=uo(await mY(r,V("sandbox.getHandoffStatusFailed"))),a=new Set(["issued","creating","session-created","continuing","running","completed","failed"]);if(typeof(s==null?void 0:s.state)!="string"||!a.has(s.state)||typeof s.expireAt!="string"||!s.expireAt.trim())throw new Error(V("sandbox.invalidHandoffStatus"));return{state:s.state,expireAt:s.expireAt,...typeof s.projectName=="string"?{projectName:s.projectName}:{},...typeof s.agentName=="string"?{agentName:s.agentName}:{},...typeof s.sessionId=="string"?{sessionId:s.sessionId}:{},...typeof s.error=="string"?{error:s.error}:{},...s.failedStage==="creating-session"||s.failedStage==="uploading-project"||s.failedStage==="restoring-project"||s.failedStage==="continuing-task"?{failedStage:s.failedStage}:{}}},async listModels(n,i={}){const r=uo(await jc(e,n,"models",{options:i,fallback:V("sandbox.listModelsFailed")}));if(!Array.isArray(r==null?void 0:r.models))throw new Error(V("sandbox.invalidModelList"));return r.models.flatMap(s=>{const a=lJe(s);return a?[a]:[]})},async setModel(n,i,r={}){const s=uo(await jc(e,n,"model",{method:"PUT",body:{model:i},options:r,fallback:V("sandbox.setModelFailed")}));if(typeof(s==null?void 0:s.model)!="string"||!s.model)throw new Error(V("sandbox.invalidModel"));return s.model},async listSkills(n,i=!1,r={}){const a=uo(await jc(e,n,`skills${i?"?force_reload=true":""}`,{options:r,fallback:V("sandbox.listSkillsFailed")}));if(!Array.isArray(a==null?void 0:a.skills))throw new Error(V("sandbox.invalidSkillList"));return a.skills.flatMap(l=>{const c=cJe(l);return c?[c]:[]})},async listThreads(n,i={},r={}){const s=new URLSearchParams;i.cursor&&s.set("cursor",i.cursor),i.search&&s.set("search",i.search),i.archived&&s.set("archived","true");const a=s.size?`?${s}`:"",l=uo(await jc(e,n,`threads${a}`,{options:r,fallback:V("sandbox.listThreadsFailed")}));if(!Array.isArray(l==null?void 0:l.threads))throw new Error(V("sandbox.invalidThreadList"));return{threads:l.threads.flatMap(c=>{const u=dTe(c);return u?[u]:[]}),...typeof l.nextCursor=="string"?{nextCursor:l.nextCursor}:{}}},async newThread(n,i={}){return xb(await jc(e,n,"threads/new",{method:"POST",options:i,fallback:V("sandbox.createThreadFailed")}))},async readThread(n,i,r={}){if(!i)throw new Error(V("sandbox.missingThread"));return xb(await jc(e,n,`threads/${encodeURIComponent(i)}`,{options:r,fallback:V("sandbox.readThreadFailed")}))},async resumeThread(n,i,r={}){return xb(await jc(e,n,"threads/resume",{method:"POST",body:{threadId:i},options:r,fallback:V("sandbox.resumeThreadFailed")}))},async forkThread(n,i={}){return xb(await jc(e,n,"threads/fork",{method:"POST",options:i,fallback:V("sandbox.forkThreadFailed")}))},async archiveThread(n,i,r={}){const s=uo(await jc(e,n,"threads/archive",{method:"POST",body:{threadId:i},options:r,fallback:V("sandbox.archiveThreadFailed")}));if((s==null?void 0:s.archived)!==!0)throw new Error(V("sandbox.invalidArchiveResult"));return{archived:!0,...s.thread?{snapshot:xb(s)}:{}}},async deleteThread(n,i,r={}){const s=uo(await jc(e,n,"threads/delete",{method:"POST",body:{threadId:i},options:r,fallback:V("sandbox.deleteThreadFailed")}));if((s==null?void 0:s.deleted)!==!0)throw new Error(V("sandbox.invalidDeleteResult"));return{deleted:!0,...s.thread?{snapshot:xb(s)}:{}}},async compactThread(n,i={}){await jc(e,n,"threads/compact",{method:"POST",options:i,fallback:V("sandbox.compactThreadFailed")})},async getSettings(n,i={}){const r=await pn(`${e}/${encodeURIComponent(n)}/settings`,{method:"GET",headers:Yr(),signal:i.signal},Oh);if(!r.ok)throw await Es(r,V("sandbox.getSettingsFailed"));return yY(await r.json())},async updatePermissions(n,i,r={}){const s=await pn(`${e}/${encodeURIComponent(n)}/permissions`,{method:"PUT",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify(i),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.updatePermissionsFailed"));const a=await s.json();return ZI(a.permissions)},async updateWorkspace(n,i,r={}){const s=await pn(`${e}/${encodeURIComponent(n)}/workspace`,{method:"PUT",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({cwd:i}),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.updateWorkspaceFailed"));const a=await s.json();if(typeof a.cwd!="string"||!a.cwd)throw new Error(V("sandbox.invalidWorkingDirectory"));return a.cwd},async listDirectories(n,i,r={}){const s=new URLSearchParams({path:i}),a=await pn(`${e}/${encodeURIComponent(n)}/directories?${s}`,{method:"GET",headers:Yr(),signal:r.signal},Oh);if(!a.ok)throw await Es(a,V("sandbox.listDirectoriesFailed"));const l=await a.json();if(typeof l.path!="string"||!Array.isArray(l.directories)||l.directories.some(c=>!c||typeof c.name!="string"||typeof c.path!="string"))throw new Error(V("sandbox.invalidDirectoryList"));return{path:l.path,...typeof l.parent=="string"?{parent:l.parent}:{},directories:l.directories}},async resolveApproval(n,i,r,s={}){const a=await pn(`${e}/${encodeURIComponent(n)}/approvals/${encodeURIComponent(i)}`,{method:"POST",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({decision:r}),signal:s.signal},Oh);if(!a.ok)throw await Es(a,V("sandbox.resolveApprovalFailed"))},async launchTerminal(n,i={}){return vY(e,n,"terminal",i)},async launchBrowser(n,i={}){return vY(e,n,"browser",i)},async uploadFile(n,i,r={}){const s=new FormData;s.set("file",i,i.name);const a=await pn(`${e}/${encodeURIComponent(n)}/files`,{method:"POST",headers:Yr(),body:s,signal:r.signal},sJe);if(!a.ok)throw await Es(a,V("sandbox.uploadFileFailed"));const l=await a.json();if(typeof l.id!="string"||typeof l.path!="string"||typeof l.name!="string"||typeof l.mimeType!="string"||typeof l.sizeBytes!="number")throw new Error(V("sandbox.invalidUploadResult"));return l},async closeSession(n,i={}){if(!n)return;const r=await pn(`${e}/${encodeURIComponent(n)}/disconnect`,{method:"POST",headers:Yr(),signal:i.signal},rO);if(!r.ok&&r.status!==404)throw await Es(r,V("sandbox.disconnectCodexFailed"))},async deleteSession(n,i={}){if(!n)return;const r=await pn(`${e}/${encodeURIComponent(n)}`,{method:"DELETE",headers:Yr(),signal:i.signal},rO);if(!r.ok&&r.status!==404)throw await Es(r,V("sandbox.deleteCodexFailed"))}}}const kr=hTe(nJe),M0=hTe("/web/intelligent-development/sessions",{textOnly:!0,messageTimeoutMs:36e5,interruptTimeoutMs:45e3,intelligentDevelopment:!0});async function vY(e,t,n,i){const r=await pn(`${e}/${encodeURIComponent(t)}/${n}`,{method:"POST",headers:Yr(),signal:i.signal},Oh);if(!r.ok)throw await Es(r,V(n==="terminal"?"sandbox.openSandboxTerminalFailed":"sandbox.openSandboxBrowserFailed"));const s=await r.json();return{url:pTe(s.url,V("sandbox.toolLabel")),...typeof s.shellSessionId=="string"?{shellSessionId:s.shellSessionId}:{}}}function pTe(e,t){if(typeof e!="string")throw new Error(V("sandbox.invalidToolUrl",{label:t}));if(e.startsWith("/"))return ta(e);let n;try{n=new URL(e)}catch{throw new Error(V("sandbox.invalidToolUrl",{label:t}))}const i=n.protocol==="http:"&&window.location.protocol==="http:";if(n.protocol!=="https:"&&!i)throw new Error(V("sandbox.unsafeToolUrl",{label:t}));return n.toString()}const zc=e=>["succeeded","cancelled","failed"].includes(e.state),mTe="/web/intelligent-development";class Xx extends Error{constructor(t,n){super(t),this.status=n}}async function tb(e,t="GET",n,i){const r=await pn(`${mTe}${e}`,{method:t,signal:i,headers:Yr(n===void 0?void 0:{"Content-Type":"application/json"}),...n===void 0?{}:{body:JSON.stringify(n)}},3e4);if(!r.ok){const s=await r.json().catch(()=>null),a=s==null?void 0:s.detail;throw new Xx(typeof a=="string"?a:(a==null?void 0:a.message)||V("developmentRuns.requestFailed"),r.status)}return r.json()}function L0(e){const t=e;if(!t||typeof t.runId!="string"||typeof t.sessionId!="string"||!["queued","running","recovering","waiting_user","stopping","succeeded","cancelled","failed"].includes(t.state))throw new Error(V("developmentRuns.invalidResponse"));return t}const bd={async active(e){const t=await tb("/runs","GET",void 0,e);if(!Array.isArray(t.runs))throw new Error(V("developmentRuns.invalidResponse"));return t.runs.map(L0)},async get(e,t){return L0(await tb(`/runs/${encodeURIComponent(e)}`,"GET",void 0,t))},async list(e,t){const n=await tb(`/sessions/${encodeURIComponent(e)}/runs`,"GET",void 0,t);if(!Array.isArray(n.runs))throw new Error(V("developmentRuns.invalidResponse"));return n.runs.map(L0)},async create(e,t,n){return L0(await tb(`/sessions/${encodeURIComponent(e)}/runs`,"POST",{message:t,requestId:n}))},async steer(e,t,n){await tb(`/runs/${encodeURIComponent(e)}/inputs`,"POST",{message:t,clientId:n})},async stop(e){return L0(await tb(`/runs/${encodeURIComponent(e)}/stop`,"POST"))},async resume(e){return L0(await tb(`/runs/${encodeURIComponent(e)}/resume`,"POST"))}};class hJe{constructor(t){Jt(this,"cursor",0);Jt(this,"turns",[]);Jt(this,"activeInput");Jt(this,"itemTurns",new Map);Jt(this,"nativeInputs",new Map);Jt(this,"metrics",new Map);Jt(this,"inputOrder",[]);Jt(this,"projections",new Map);Jt(this,"itemInputs",new Map);this.run=t,this.activeInput=t.requestId}projection(t){let n=this.projections.get(t);if(!n){const i={role:"assistant",blocks:[],meta:{localId:`${t}:assistant`}},r=this.turns.findIndex(s=>{var a;return((a=s.meta)==null?void 0:a.localId)===`${t}:user`});this.turns.splice(r<0?this.turns.length:r+1,0,i),n=fTe({onBlocks:s=>{i.blocks=s.map(a=>({...a,turnId:this.itemTurns.get(a.id||"")}))},onUsage:s=>{i.meta={...i.meta,sandboxUsage:s.usage}}}),this.projections.set(t,n)}return n}apply(t){if(t.payload.runId!==this.run.runId)throw new Error(V("developmentRuns.invalidResponse"));if(t.seq<=this.cursor)return;if(t.seq!==this.cursor+1)throw new Error(V("developmentRuns.eventGap"));for(const i of this.turns)i.blocks.some(r=>r.kind==="turn-summary")&&(i.blocks=i.blocks.filter(r=>r.kind!=="turn-summary"));const n=t.payload;if(t.type==="run.input"&&typeof n.clientId=="string"&&typeof n.message=="string")this.turns.push({role:"user",blocks:[{kind:"text",text:n.message}],meta:{localId:`${n.clientId}:user`},activity:{id:`${n.clientId}:delivery`,title:V(`developmentRuns.input.${String(n.status)}`)}}),this.inputOrder.push(n.clientId),this.projection(n.clientId),n.status==="delivered"&&this.inputOrder.indexOf(n.clientId)>=this.inputOrder.indexOf(this.activeInput)&&(this.activeInput=n.clientId);else if(t.type==="run.input_status"&&typeof n.clientId=="string"){const i=this.turns.find(r=>{var s;return((s=r.meta)==null?void 0:s.localId)===`${n.clientId}:user`});i&&(i.activity={id:`${n.clientId}:delivery`,title:V(`developmentRuns.input.${String(n.status)}`)}),n.status==="delivered"&&this.inputOrder.indexOf(n.clientId)>=this.inputOrder.indexOf(this.activeInput)&&(this.activeInput=n.clientId)}else if(t.type==="run.turn"&&typeof n.turnId=="string"){const r={...this.metrics.get(n.turnId),turnId:n.turnId,status:String(n.status||"inProgress"),toolCalls:0,toolDurationComplete:!1};for(const s of["startedAt","completedAt","durationMs"])typeof n[s]=="number"&&Number.isFinite(n[s])&&n[s]>=0&&(r[s]=n[s]);if(typeof n.model=="string"&&(r.model=n.model),n.usage&&typeof n.usage=="object"&&!Array.isArray(n.usage)){const s={};for(const a of["totalTokens","inputTokens","outputTokens","cachedInputTokens","cacheWriteInputTokens","reasoningOutputTokens"]){const l=n.usage[a];typeof l=="number"&&Number.isSafeInteger(l)&&l>=0&&(s[a]=l)}r.usage=s}n.usageIncomplete===!0&&(r.usageIncomplete=!0),this.metrics.set(n.turnId,r),this.nativeInputs.set(n.turnId,this.activeInput),this.projection(this.activeInput)}else if(t.type==="run.status"){if(this.run={...this.run,...n},zc(this.run))for(const[i,r]of this.metrics)r.status==="inProgress"&&this.metrics.set(i,{...r,status:"unavailable",usageIncomplete:!0});if(zc(this.run)||this.run.state==="waiting_user")for(const i of this.projections.values())i.consumeFrame(`event: done
+${n}`}}async function*rZe({runtimeId:e,region:t,instanceName:n,sessionId:i,follow:r=!0,signal:s}){const a=new URLSearchParams({region:t,follow:String(r)});n&&a.set("instance_name",n),i&&a.set("session_id",i);const l=await fetch(ta(`/web/runtime-logs/${encodeURIComponent(e)}/stream?${a.toString()}`),{headers:Ll(pu({Accept:"text/event-stream"})),cache:"no-store",signal:s});if(!l.ok)throw new Error(V("runtimeLogs.loadFailedWithDetail",{detail:await iZe(l)}));for await(const c of zI(l)){if(!nZe(c))throw new Error(V("runtimeLogs.invalidFormat"));yield c}}const sZe=255,oZe=/[\p{L}\p{M}\p{N}\p{P}\p{Zs}]/u;function aZe(e){const t=e.normalize("NFKC").replace(/\s+/gu," ").trim(),n=new TextEncoder;let i=0,r="";for(const s of t){if(!oZe.test(s))continue;const a=n.encode(s).byteLength;if(i+a>sZe)break;r+=s,i+=a}return r.replace(/ +/g," ").trimEnd()}const lZe=/RunPipeline result could not be reconciled|Polling build status failed/i;class D_ extends Error{constructor({taskId:n,cause:i}={}){super("The deployment request may still be running, but its status could not be confirmed.");Jt(this,"taskId");this.name="DeploymentStatusUnconfirmedError",this.taskId=n}}function AEe(e){if(e instanceof D_)return!0;const t=e instanceof Error?e.message:String(e??"");return lZe.test(t)}function _Ee(e){return!!(e&&typeof e=="object"&&"name"in e&&e.name==="AbortError")}async function cZe({load:e,signal:t,timeoutMs:n=30*6e4,intervalMs:i=2e3,shouldRetry:r=()=>!0}){if(t!=null&&t.aborted)throw t.reason??new DOMException("Aborted","AbortError");const s=Date.now()+Math.max(0,n);for(;!(t!=null&&t.aborted)&&Date.now()<=s;){try{const a=await e(t);if(a.done)return a}catch(a){if(t!=null&&t.aborted||_Ee(a)||!r(a))throw a}if(t!=null&&t.aborted)throw t.reason??new DOMException("Aborted","AbortError");i<=0||await new Promise((a,l)=>{const c=()=>{globalThis.clearTimeout(u),t==null||t.removeEventListener("abort",c),l((t==null?void 0:t.reason)??new DOMException("Aborted","AbortError"))},u=globalThis.setTimeout(()=>{t==null||t.removeEventListener("abort",c),a()},i);t==null||t.addEventListener("abort",c,{once:!0})})}return null}const Q$="ap-southeast-1",xU="cn-beijing",uZe="https://ark.ap-southeast.bytepluses.com/api/v3",dZe="https://ark.cn-beijing.volces.com/api/v3/",fZe="https://console.byteplus.com/ark/region:ark+ap-southeast-1/openManagement",hZe="https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement",pZe="dola-seed-2-1-turbo-260628",mZe="doubao-seed-2-1-pro-260628",gZe="skylark-embedding-vision-250615",bZe="doubao-embedding-vision-250615",yZe="seed-2-0-lite-260228",vZe="doubao-seed-2-0-lite-260428",xZe="dola-seedream-5-0-pro-260628",wZe="doubao-seedream-5-0-260128",OZe="seededit-3-0-i2i-250628",kZe="doubao-seededit-3-0-i2i-250628",SZe="dreamina-seedance-2-0-260128",EZe="doubao-seedance-2-0-260128";function iu(e){return e==="byteplus"?[{value:Q$,label:Q$}]:[{value:"cn-beijing",label:V("cloudRegion.cnBeijing")},{value:"cn-shanghai",label:V("cloudRegion.cnShanghai")}]}function qi(e){var t;return((t=iu(e)[0])==null?void 0:t.value)||xU}const CZe=new Set(["cn-beijing","cn-shanghai","ap-southeast-1"]);function VI(e){return typeof e=="string"&&CZe.has(e)}function Lf(e,t){var i;return((i=(t?iu(t):[...iu("volcengine"),...iu("byteplus")]).find(r=>r.value===e))==null?void 0:i.label)||e||"-"}function lp(e){return e==="byteplus"?pZe:mZe}function wa(e){return e==="byteplus"?uZe:dZe}function TZe(e){return e==="byteplus"?fZe:hZe}function AZe(e){return e==="byteplus"?gZe:bZe}function _Ze(e){return e==="byteplus"?yZe:vZe}function jZe(e){return e==="byteplus"?xZe:wZe}function NZe(e){return e==="byteplus"?OZe:kZe}function RZe(e){return e==="byteplus"?SZe:EZe}const wU="veadk.messageFeedback.v1";function OU(e,t,n,i){return[e,t,n,i].join(":")}function kU(){if(typeof window>"u")return{};try{const e=JSON.parse(localStorage.getItem(wU)??"{}");return e&&typeof e=="object"?e:{}}catch{return{}}}function IZe(e,t,n){if(typeof window>"u")return;const i=kU();i[e]={...i[e]??{},[`veadk_feedback:${t}`]:n},localStorage.setItem(wU,JSON.stringify(i))}function jEe(e){if(typeof window>"u")return;const t=OU(e.runtimeId,e.appName,e.userId,e.sessionId),n=kU(),i=n[t];if(i){for(const r of e.eventIds)delete i[`veadk_feedback:${r}`];Object.keys(i).length===0?delete n[t]:n[t]=i,localStorage.setItem(wU,JSON.stringify(n))}}const M_="",SU=new Map;function NEe(e,t){SU.set(e,t)}function REe(){SU.clear()}function pc(e){const t=SU.get(e);return t?{app:t.app,ep:{base:t.base,apiKey:t.apiKey,runtimeId:t.runtimeId,region:t.region}}:{app:e,ep:{}}}async function Lt(e,t={},n={},i=qa){const r=Wa(t.signal,i),s=!!n.runtimeId&&String(t.method??"GET").toUpperCase()==="DELETE",a={...t,...s?{method:"POST"}:{},headers:Ll(pu(t.headers))},l=()=>{const d={...a,signal:r};if(n.runtimeId){const f=new URLSearchParams;n.region&&f.set("_runtime_region",n.region),n.retryProbe&&f.set("probe_retry","connect"),s&&f.set("_method","DELETE");const h=f.toString()?`${e.includes("?")?"&":"?"}${f.toString()}`:"";return fetch(ta(`${M_}/web/runtime-proxy/${n.runtimeId}${e}${h}`),d)}if(n.base){const f=new Headers(d.headers);return f.set("X-AgentKit-Base",n.base),n.apiKey&&f.set("X-AgentKit-Key",n.apiKey),fetch(ta(`${M_}/agentkit-proxy${e}`),{...d,headers:f})}return fetch(ta(`${M_}${e}`),d)},c=async d=>{if(d.headers.get("X-Studio-Error-Source")==="upstream")return!1;if(QYe(d))return!0;if(d.status!==401)return!1;try{return await LYe()}catch{return!1}};let u=await l();for(;await c(u);)await zYe(r),u=await l();return u}function pn(e,t={},n=qa){return Lt(e,t,{},n)}function PZe(e){return typeof e=="string"?e:Array.isArray(e)?e.map(t=>{var n;if(t&&typeof t=="object"&&"msg"in t){const i=Array.isArray(t.loc)?(n=t.loc)==null?void 0:n.join("."):"",r=String(t.msg??"");return i?`${i}: ${r}`:r}return String(t)}).filter(Boolean).join(`
+`):e&&typeof e=="object"?JSON.stringify(e):""}async function dn(e,t){const n=e.headers.get("X-Studio-Error-Source"),i=n==="upstream"?e.headers.get("X-Studio-Upstream-Status")??e.status:e.status,r=V("common.fallbackWithHttpStatus",{fallback:t,status:i}),s=await e.text().catch(()=>"");if(n==="upstream")return V("client.errorWithCloudResponse",{context:r,action:e.headers.get("X-Studio-Upstream-Action")??"",response:s||V("client.emptyCloudResponse")});if(!s)return r;try{const a=JSON.parse(s),l=PZe(a.detail??a.error);return n==="transport"||n==="studio"?l?`${r}
+${l}`:r:l?V("client.errorWithDetailAndRawResponse",{context:r,detail:l,response:s}):V("client.errorWithRawResponse",{context:r,response:s})}catch{return V("client.errorWithRawResponse",{context:r,response:s})}}async function EU(e,t=!1){const n=await Lt(`/web/model-api-keys${t?"?refresh=true":""}`,{signal:e,cache:"no-store"});if(!n.ok)throw new Error(await dn(n,V("client.loadArkApiKeysFailed")));return await n.json()}async function IEe(e,t){const n=await Lt(`/web/model-api-keys/${encodeURIComponent(e)}/value`,{method:"POST",signal:t,cache:"no-store"});if(!n.ok)throw new Error(await dn(n,V("client.loadArkApiKeysFailed")));return await n.json()}async function Bw(e){const t=new URLSearchParams;e!=null&&e.apiKeyId&&t.set("apiKeyId",e.apiKeyId),e!=null&&e.refresh&&t.set("refresh","true"),e!=null&&e.scope&&t.set("scope",e.scope);const n=t.toString(),i=await Lt(`/web/model-options${n?`?${n}`:""}`,{signal:e==null?void 0:e.signal,cache:"no-store"});if(!i.ok)throw new Error(await dn(i,V("client.loadModelsFailed")));return await i.json()}async function PEe(){const e=await Lt("/list-apps");if(!e.ok)throw new Error(`list-apps failed: ${e.status}`);return e.json()}class Uw extends Error{constructor(){super(V("client.runtimeAccessDenied")),this.name="RuntimeAccessDeniedError"}}class po extends Error{constructor(t,n=!1,i=!1){super(t),this.unsupported=n,this.retryable=i,this.name="RuntimeProbeError"}}const DEe=()=>V("client.privateRuntimeUnavailable"),MEe=()=>V("client.runtimeTemporarilyUnavailable"),aY=["cn-beijing","cn-shanghai"],DZe=3e4,Qw=5*60*1e3,LEe=60*1e3;let VS="volcengine";const ix=new Map,yb=new Map,vb=new Map,xd=new Map,Vr=new Map;function CU(e,t,n){return`${t}:${e}:${n??""}`}function $Ee(e){e!==VS&&Vr.clear(),VS=e}function kC(e){const t=(e||"").trim();if(VS==="byteplus")return[t&&!t.startsWith("cn-")?t:Q$];const n=t&&!t.startsWith("ap-")?t:xU;return aY.includes(n)?[n,...aY.filter(i=>i!==n)]:[n]}function HI(e){const t=(e||"").trim();return t?[t]:kC()}function qy(...e){return e.map(t=>String(t??"")).join("")}function _g(e,t,n){const i=e.get(t);return i!=null&&i.value&&Date.now()-i.updatedAt<=n?i.value:null}function TU(e,t,n){return e.set(t,{value:n,updatedAt:Date.now()}),n}function C2(e,t){return t?t.aborted?Promise.reject(new DOMException("The operation was aborted.","AbortError")):new Promise((n,i)=>{const r=()=>{i(new DOMException("The operation was aborted.","AbortError"))};t.addEventListener("abort",r,{once:!0}),e.then(s=>{t.removeEventListener("abort",r),n(s)},s=>{t.removeEventListener("abort",r),i(s)})}):e}async function FEe(e){try{const t=await e.clone().json();return typeof t.detail=="string"?t.detail:""}catch{return""}}async function SC(e,t,n,i,r=qa){const s=await Lt("/list-apps",{signal:i},n??{base:e,apiKey:t},r),a=n!=null&&n.runtimeId?await FEe(s):"";if(n!=null&&n.runtimeId&&a==="runtime_access_denied")throw new Uw;if(n!=null&&n.runtimeId&&a==="runtime_private_endpoint_unreachable")throw new po(DEe());if(n!=null&&n.runtimeId&&["runtime_proxy_connect_error","runtime_proxy_timeout","runtime_json_connect_error","runtime_json_timeout"].includes(a))throw new po(MEe(),!1,!0);if(n!=null&&n.runtimeId&&s.status===404)throw new po(V("client.runtimeConnectionUnsupported"),!0,!0);if(n!=null&&n.runtimeId&&(s.status===401||s.status===403))throw new po(V("client.runtimeConnectionDenied"));if(!s.ok)throw new Error(await dn(s,V("client.listAgentsFailed")));let l;try{l=await s.json()}catch{throw new po(V("client.invalidListAppsJson"))}if(!Array.isArray(l)||l.some(u=>typeof u!="string"||!u.trim()))throw new po(V("client.invalidListAppsFormat"));const c=l.map(u=>u.trim());return n!=null&&n.runtimeId&&ix.set(CU(n.runtimeId,n.region??"",n.runtimeVersion),{apps:c,expiresAt:Date.now()+DZe}),c}async function BEe(e,t){const{app:n,ep:i}=pc(e),r=await Lt(`/apps/${n}/users/${encodeURIComponent(t)}/sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"},i);if(!r.ok){const a=V("client.createSessionFailedWithStatus",{status:r.status}),l=await dn(r,V("client.createSessionFailed"));throw new Error(l===a?a:V("common.fallbackWithDetail",{fallback:a,detail:l}))}return(await r.json()).id}async function AU(e,t){const{app:n,ep:i}=pc(e),r=await Lt(`/apps/${n}/users/${encodeURIComponent(t)}/sessions`,{},i);if(!r.ok)throw new Error(`list sessions failed: ${r.status}`);return r.json()}async function qI(e,t,n){const{app:i,ep:r}=pc(e),s=await Lt(`/apps/${i}/users/${encodeURIComponent(t)}/sessions/${encodeURIComponent(n)}`,{},r);if(!s.ok){const l=await dn(s,V("client.getSessionFailed"));throw new Error(V("client.getSessionFailedWithDetail",{status:s.status,detail:l}))}const a=await s.json();if(r.runtimeId){const l=OU(r.runtimeId,i,t,n);a.state={...kU()[l]??{},...a.state??{}}}return a}async function UEe(e){const{app:t,ep:n}=pc(e.appName);if(!n.runtimeId)throw new Error(V("client.feedbackRuntimeOnly"));if(!n.region)throw new Error(V("client.feedbackRegionMissing"));const i=await Lt("/web/evaluation/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:n.runtimeId,region:n.region,appName:t,userId:e.userId,sessionId:e.sessionId,eventId:e.eventId,rating:e.rating,comment:e.comment??""})},{},hr);if(!i.ok)throw new Error(await dn(i,V("client.submitFeedbackFailed")));const r=await i.json(),s=OU(n.runtimeId,t,e.userId,e.sessionId);return IZe(s,e.eventId,r),r}async function WI(e,t={}){const n=qy(e.runtimeId,e.region||"cn-beijing",e.appName,e.pageSize??100),i=_g(xd,n,LEe);if(!t.force&&i)return i;const r=xd.get(n);if(!t.force&&(r!=null&&r.promise))return r.promise;let s=null;const a=(async()=>{for(const l of HI(e.region)){const c=new URLSearchParams({runtimeId:e.runtimeId,region:l,appName:e.appName,page_size:String(e.pageSize??100)}),u=await Lt(`/web/evaluation/feedback-cases?${c.toString()}`);if(u.ok)return TU(xd,n,await u.json());s=new Error(await dn(u,V("client.loadEvaluationSetsFailed")))}throw s??new Error(V("client.loadEvaluationSetsFailed"))})();xd.set(n,{...r,promise:a,updatedAt:(r==null?void 0:r.updatedAt)??0});try{return await a}finally{const l=xd.get(n);(l==null?void 0:l.promise)===a&&xd.set(n,{value:l.value,updatedAt:l.updatedAt})}}async function z$(e){let t=null;for(const n of HI(e.region)){const i=new URLSearchParams({runtimeId:e.runtimeId,region:n,appName:e.appName,userId:e.userId}),r=await Lt(`/web/evaluation/statuses?${i.toString()}`);if(r.ok)return r.json();t=new Error(await dn(r,V("client.loadAutoEvaluationStatusFailed")))}throw t??new Error(V("client.loadAutoEvaluationStatusFailed"))}async function QEe(e){let t=null;for(const n of HI(e.region)){const i=new URLSearchParams({runtimeId:e.runtimeId,region:n,appName:e.appName}),r=await Lt(`/web/evaluation/optimizations?${i.toString()}`);if(r.ok)return r.json();t=new Error(await dn(r,V("client.loadOptimizationsFailed")))}throw t??new Error(V("client.loadOptimizationsFailed"))}function zEe(e){return _g(xd,qy(e.runtimeId,e.region||"cn-beijing",e.appName,e.pageSize??100),LEe)}function MZe(e){WI(e).catch(()=>{})}function VEe(e){WI(e,{force:!0}).catch(()=>{})}function HEe(e,t){return["good","bad"].map(n=>{const i=e.find(r=>r.kind===n);return{kind:n,evaluationSetId:(i==null?void 0:i.evaluationSetId)??null,evaluationSetName:(i==null?void 0:i.evaluationSetName)??null,workspaceId:(i==null?void 0:i.workspaceId)??null,itemCount:t.filter(r=>r.kind===n).length}})}function L_(e){const t=e.comment??"",n=e.rating==="bad"&&!!t.trim();for(const[i,r]of xd.entries()){const s=r.value;if(!s||s.runtimeId!==e.runtimeId||s.agentName!==e.appName)continue;const a=s.items.filter(c=>c.sessionId!==e.sessionId||c.messageId!==e.messageId),l=e.rating?[{id:`local:${e.runtimeId}:${e.sessionId}:${e.messageId}`,itemKey:`local:${e.messageId}`,kind:e.rating,input:e.input,output:e.output,referenceOutput:e.referenceOutput??e.output,comment:t,agentName:e.appName,sessionId:e.sessionId,messageId:e.messageId,runtimeId:e.runtimeId,invocationId:e.invocationId??"",userId:e.userId,createdAt:e.createdAt??new Date().toISOString(),evaluationSetId:"",evaluationSetName:"",workspaceId:"",source:"user",score:n?0:null,reason:n?t:""},...a]:a;xd.set(i,{value:{...s,sets:HEe(s.sets,l),items:l},updatedAt:Date.now(),promise:r.promise})}}async function qEe(e){let t=null;for(const n of HI(e.region)){const i=await Lt("/web/evaluation/feedback-cases/delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e.runtimeId,region:n,appName:e.appName,itemIds:e.itemIds})},{},hr);if(i.ok){const r=await i.json(),s=new Set(e.itemIds);for(const[a,l]of xd.entries()){const c=l.value;if(!c||c.runtimeId!==e.runtimeId||c.agentName!==e.appName)continue;const u=c.items.filter(d=>!s.has(d.id));xd.set(a,{value:{...c,sets:HEe(c.sets,u),items:u},updatedAt:Date.now()})}return r}t=new Error(await dn(i,V("client.deleteEvaluationCaseFailed")))}throw t??new Error(V("client.deleteEvaluationCaseFailed"))}async function V$(e,t,n){const{app:i,ep:r}=pc(e),s=await Lt(`/apps/${i}/users/${encodeURIComponent(t)}/sessions/${n}`,{method:"DELETE"},r);if(!s.ok&&s.status!==404)throw new Error(`delete session failed: ${s.status}`)}function LZe(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"="),i=window.atob(n),r=new Uint8Array(i.length);for(let s=0;sURL.revokeObjectURL(l),0)}async function WEe(e,t,n,i,r){const{app:s,ep:a}=pc(e),l=r==null?"":`?version=${encodeURIComponent(r)}`,c=`/apps/${encodeURIComponent(s)}/users/${encodeURIComponent(t)}/sessions/${encodeURIComponent(n)}/artifacts/${encodeURIComponent(i)}${l}`,u=await Lt(c,{},a,hr);if(!u.ok)throw new Error(await dn(u,V("client.downloadFileFailed")));const d=await u.json(),f=d.inlineData??d.inline_data;if(!(f!=null&&f.data))throw new Error(V("client.fileUnavailable"));const h=LZe(f.data),m=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);return{blob:new Blob([m],{type:f.mimeType??f.mime_type??"application/octet-stream"}),downloadName:f.displayName??f.display_name??i}}async function jU(e,t,n,i,r){const{blob:s}=await WEe(e,t,n,i,r);return URL.createObjectURL(s)}async function $Ze(e){const t=await Lt("/web/media/capabilities");if(!t.ok)throw new Error(await dn(t,"media capabilities failed"));return t.json()}async function KEe(e,t,n,i){const{app:r}=pc(e),s=new FormData;s.set("app_name",r),s.set("user_id",t),s.set("session_id",n),s.set("file",i);const a=await Lt("/web/media",{method:"POST",body:s},{},hr);if(!a.ok)throw new Error(await dn(a,V("client.uploadFileFailed")));return{...await a.json(),status:"ready"}}async function H$(e,t,n){const{app:i}=pc(e),r=`/web/media/${encodeURIComponent(i)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}/delete`,s=await Lt(r,{method:"POST"});if(!s.ok&&s.status!==404)throw new Error(await dn(s,"media cleanup failed"))}function GEe(e){try{const t=new URL(e);if(t.protocol!=="veadk-media:"||t.hostname!=="apps")return;const n=t.pathname.split("/").filter(Boolean).map(decodeURIComponent);return n.length!==7||n[1]!=="users"||n[3]!=="sessions"||n[5]!=="media"?void 0:`/web/media/${n.map(encodeURIComponent).filter((i,r)=>![1,3,5].includes(r)).join("/")}`}catch{return}}async function $_(e,t){const n=GEe(t);if(!n)throw new Error("Invalid VeADK media URI");const i=await Lt(`${n}/delete`,{method:"POST"});if(!i.ok&&i.status!==404)throw new Error(await dn(i,"media cleanup failed"))}function XEe(e,t){if(t.startsWith("data:")||t.startsWith("blob:")||/^https?:/.test(t))return t;const n=GEe(t);if(!n)return t;const i=`${n}/content`;return ta(`${M_}${i}`)}async function kN(e,t,n){const{app:i,ep:r}=pc(e);let s;if(r.runtimeId){const c=new URLSearchParams({runtimeId:r.runtimeId,sessionId:t,region:r.region??"cn-beijing"});if(n&&c.set("endTimeMs",String(Math.round(n))),s=await Lt(`/web/runtime-trace?${c.toString()}`),s.status===404)throw new Error(V("client.traceDisabled"))}else s=await Lt(`/dev/apps/${encodeURIComponent(i)}/debug/trace/session/${encodeURIComponent(t)}`,{},r);if(!s.ok)throw new Error(await dn(s,V("client.loadTraceFailed")));const a=s.headers.get("content-type")??"";if(!a.includes("application/json")){const c=a.split(";",1)[0]||V("client.contentTypeMissing");throw new Error(V("client.traceNonJson",{contentType:c}))}const l=await s.json();if(!Array.isArray(l))throw new Error(V("client.invalidTraceFormat"));return l}async function q$(e){const t=await Lt("/web/issue-feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(await dn(t,V("client.submitIssueFeedbackFailed")));if((await t.json()).submitted!==!0)throw new Error(V("client.issueFeedbackNotConfirmed"));return{submitted:!0}}async function YEe(e,t,n=!0){const i=await Lt(`/web/agent-info/${e}`,{},t);if(!i.ok)throw new Error(`agent-info failed: ${i.status}`);const r=await i.json();if(n&&!r.draft)try{const s=await Lt(`/web/agent-draft/${e}`,{},t);if(s.ok){const a=await s.json();r.draft=a.draft}}catch{}return{appName:e,name:r.name??e,description:r.description??"",type:r.type,model:r.model??"",tools:r.tools??[],skillsPreviewSupported:Array.isArray(r.skills),skills:r.skills??[],subAgents:r.subAgents??[],components:r.components??[],searchSources:r.searchSources??[],graph:r.graph,draft:r.draft}}async function W$(e){const{app:t,ep:n}=pc(e);return YEe(t,n,!1)}async function FZe(e,t,n){let i=null;for(const r of kC(t)){const s={runtimeId:e,region:r};try{const a=CU(e,r),l=ix.get(a);l&&l.expiresAt<=Date.now()&&ix.delete(a);const c=ix.get(a),u=n||(c==null?void 0:c.apps[0])||(await SC("","",s))[0];if(!u)throw new Error(V("client.noPreviewableAgent"));return YEe(u,s)}catch(a){if(a instanceof Uw||a instanceof po&&!a.unsupported)throw a;i=a instanceof Error?a:new Error(String(a))}}throw i??new Error(V("client.noPreviewableAgent"))}async function NU(e,t,n={},i={}){const r=typeof n=="string"?n:void 0,s=typeof n=="string"?i:n,a=qy(e,t||"cn-beijing",r??""),l=_g(yb,a,Qw);if(!s.force&&l)return l;const c=yb.get(a);if(!s.force&&(c!=null&&c.promise))return c.promise;const u=FZe(e,t,r).then(d=>TU(yb,a,d));yb.set(a,{...c,promise:u,updatedAt:(c==null?void 0:c.updatedAt)??0});try{return await u}finally{const d=yb.get(a);(d==null?void 0:d.promise)===u&&yb.set(a,{value:d.value,updatedAt:d.updatedAt})}}function ZEe(e,t,n=""){return _g(yb,qy(e,t||"cn-beijing",n),Qw)}function JEe(e,t,n=""){NU(e,t,n).catch(()=>{})}async function eCe(e,t,n,i){const{app:r,ep:s}=pc(e),a=new URLSearchParams({source:t,app_name:r,q:n,user_id:i}),l=await Lt(`/web/search?${a.toString()}`,{},s);if(!l.ok)throw new Error(await dn(l,V("client.agentSearchFailed")));return l.json()}async function tCe(e,t){const{app:n}=pc(e),i=await Lt(`/web/search?source=web&app_name=${encodeURIComponent(n)}&q=${encodeURIComponent(t)}`);if(!i.ok)throw new Error(`web search failed: ${i.status}`);return i.json()}function nCe(){return lm(V("client.emptySseBody"))}function F_(){return lm(V("client.noDisplayableSseReply"))}const BZe=6e4;function Kx(){return V("client.firstSseEventTimeout")}function iCe(e){if(e!=null&&e.aborted)return{signal:e,clearDeadline:()=>{},cleanup:()=>{},timedOut:()=>!1};const t=new AbortController;let n=!1,i=!1;const r=()=>{i||(i=!0,clearTimeout(a))},s=()=>{t.signal.aborted||t.abort((e==null?void 0:e.reason)??new DOMException("Aborted","AbortError"))},a=setTimeout(()=>{i||t.signal.aborted||(n=!0,i=!0,t.abort(new Error(Kx())))},BZe);return e==null||e.addEventListener("abort",s,{once:!0}),{signal:t.signal,clearDeadline:r,cleanup:()=>{r(),e==null||e.removeEventListener("abort",s)},timedOut:()=>n}}async function*K$({appName:e,userId:t,sessionId:n,text:i,attachments:r=[],invocation:s,platformTools:a,environmentMounts:l,environmentMount:c,functionResponses:u=[],signal:d,onRuntimeContext:f}){const{app:h,ep:m}=pc(e),g=r.flatMap(S=>S.status&&S.status!=="ready"?[]:S.uri?[{fileData:{mimeType:S.mimeType,fileUri:S.uri,displayName:S.name},partMetadata:{veadkMedia:{id:S.id,uri:S.uri,name:S.name,mimeType:S.mimeType,sizeBytes:S.sizeBytes}}}]:S.data?[{inlineData:{mimeType:S.mimeType,data:S.data,displayName:S.name}}]:[]),b=s&&(s.skills.length>0||s.targetAgent)?s:void 0,v=[...g,...u.map(S=>({functionResponse:{id:S.id,name:S.name,response:S.response}})),...i.trim()?[{text:i}]:[]];if(b&&v.length>0){const S=v[0],k=S.partMetadata;v[0]={...S,partMetadata:{...k,veadkInvocation:b}}}let y;const w=iCe(d);try{y=await Lt("/run_sse",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({app_name:h,user_id:t,session_id:n,new_message:{role:"user",parts:v},streaming:!0,...a!==void 0?{platform_tools:[...a]}:{},...l!==void 0?{environment_mounts:[...l]}:c?{environment_mount:c}:{},custom_metadata:b?{veadkInvocation:b}:void 0}),signal:w.signal},m,0)}catch(S){throw w.cleanup(),w.timedOut()?new Error(Kx()):d!=null&&d.aborted||(S==null?void 0:S.name)==="AbortError"?S:new Error(lm(S))}const x=eZe(y,m.runtimeId??"",m.region??"");if(x&&(f==null||f(x)),!y.ok){w.cleanup();const S=await dn(y,V("client.runSessionFailed"));throw new Error(lm(V("client.runSseFailedWithDetail",{status:y.status,detail:S})))}let O=!1;try{for await(const S of zI(y)){O=!0,w.clearDeadline();const k=S;typeof k.error=="string"&&(k.error=lm(k.error)),typeof k.errorMessage=="string"&&(k.errorMessage=lm(k.errorMessage)),typeof k.error_message=="string"&&(k.error_message=lm(k.error_message)),yield k}}catch(S){throw w.timedOut()?new Error(Kx()):d!=null&&d.aborted||(S==null?void 0:S.name)==="AbortError"?S:new Error(lm(S))}finally{w.cleanup()}if(!O)throw new Error(nCe())}async function KI(e,t){const n=new URLSearchParams({name:e,region:t}),i=await Lt(`/web/runtime-name-availability?${n.toString()}`,{cache:"no-store"});if(!i.ok)throw new Error(await dn(i,V("client.checkRuntimeNameFailed")));const r=await i.json();if(typeof r.available!="boolean")throw new Error(V("client.invalidRuntimeNameCheck"));return{available:r.available}}async function rCe(e,t){const n=new URLSearchParams({kind:e.kind,region:e.region});e.registry&&n.set("registry",e.registry),e.namespace&&n.set("namespace",e.namespace),e.workspaceId&&n.set("workspaceId",e.workspaceId),e.search&&n.set("search",e.search),e.pageNumber&&n.set("pageNumber",String(e.pageNumber)),e.pageSize&&n.set("pageSize",String(e.pageSize));const i=await Lt(`/web/deployment-resources?${n.toString()}`,{signal:t});if(!i.ok)throw new Error(await dn(i,V("client.loadCloudResourcesFailed")));const r=await i.json();if(typeof r.serviceRegion!="string"||!Array.isArray(r.items)||typeof r.pageNumber!="number"||typeof r.pageSize!="number"||typeof r.totalCount!="number"||typeof r.hasMore!="boolean")throw new Error(V("client.invalidCloudResources"));const s=r.items.map(a=>{if(!a||typeof a!="object"||typeof a.id!="string"||typeof a.name!="string"||typeof a.region!="string"||typeof a.status!="string")throw new Error(V("client.invalidCloudResources"));return a});return{serviceRegion:r.serviceRegion,items:s,pageNumber:r.pageNumber,pageSize:r.pageSize,totalCount:r.totalCount,hasMore:r.hasMore}}function sCe(e,t){const n=e;if(!n||typeof n!="object"||!Array.isArray(n.mounts))throw new Error(V("client.invalidEnvironmentMount"));if(n.mounts.length!==t.length)throw new Error(V("client.environmentMountMismatch"));return n.mounts.map((i,r)=>{const s=t[r];if(!i||typeof i!="object"||typeof i.environment_id!="string"||typeof i.environment_version_id!="string"||typeof i.mount_instance_id!="string"||typeof i.sandbox_session_id!="string"||!i.environment_id||!i.environment_version_id||!i.mount_instance_id||!i.sandbox_session_id)throw new Error(V("client.invalidEnvironmentMount"));if(i.environment_id!==s.environment_id||i.environment_version_id!==s.environment_version_id||s.mount_instance_id!==void 0&&i.mount_instance_id!==s.mount_instance_id)throw new Error(V("client.environmentMountMismatch"));return i})}async function oCe({runtimeId:e,appName:t,userId:n,sessionId:i,environmentMounts:r}){const{app:s}=pc(t);let a;try{a=await Lt("/web/v3/session-environment-mounts/prepare",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtime_id:e,app_name:s,user_id:n,session_id:i,environment_mounts:[...r]})})}catch(l){throw l instanceof TypeError?new Error(V("client.environmentMountNetworkFailed")):l}if(!a.ok)throw new Error(await dn(a,V("client.environmentMountFailed")));return sCe(await a.json(),r)}function RU(e){const t=new Set,n=[];for(const i of e.split(/[,,\n\r]+/)){const r=i.trim();!r||t.has(r)||(t.add(r),n.push(r))}return n}async function aCe(e,t=typeof navigator>"u"?void 0:navigator.clipboard){if(!(t!=null&&t.writeText))throw new Error(V("client.clipboardUnsupported"));try{await t.writeText(e)}catch{throw new Error(V("client.clipboardWriteFailed"))}}const lY={codex:0,codex_snapshot:1,deepseek_harness:2,deepseek_harness_snapshot:3,openclaw:4,openclaw_snapshot:5,hermes:6,hermes_snapshot:7,dev:8};async function lCe(e){var r;const t=await Lt("/web/system-info",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadSystemInfoFailed")));const n=await t.json();if(typeof((r=n.storage)==null?void 0:r.tosAddress)!="string"||!Array.isArray(n.sandboxTools))throw new Error(V("client.invalidSystemInfo"));const i=n.sandboxTools.map(s=>{if(!s||typeof s!="object"||typeof s.kind!="string"||typeof s.label!="string"||typeof s.toolId!="string"||typeof s.snapshot!="boolean"||typeof s.needsModelEnvUpdate!="boolean"||typeof s.canUpdateModelEnv!="boolean"||typeof s.modelEnvError!="string"||typeof s.modelEnvErrorCode!="string")throw new Error(V("client.invalidSystemInfo"));return s}).sort((s,a)=>(lY[s.kind]??Number.MAX_SAFE_INTEGER)-(lY[a.kind]??Number.MAX_SAFE_INTEGER));return{storage:{tosAddress:n.storage.tosAddress},sandboxTools:i}}const cCe=new Set(["preparing","queued","building","scanning","available","failed"]);function IU(e){if(e===null)return null;if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironmentBuild"));const t=e;if(typeof t.versionId!="string"||!cCe.has(t.status)||typeof t.image!="string"||typeof t.error!="string"||typeof t.createdAt!="string"||typeof t.updatedAt!="string"||t.resources!==null&&typeof t.resources!="object")throw new Error(V("client.invalidEnvironmentBuild"));const n=Array.isArray(t.steps)?t.steps.map(i=>{if(!i||typeof i!="object"||typeof i.key!="string"||typeof i.label!="string"||!["pending","running","succeeded","failed"].includes(i.status)||i.startedAt!==null&&typeof i.startedAt!="string"||i.finishedAt!==null&&typeof i.finishedAt!="string")throw new Error(V("client.invalidEnvironmentBuildStep"));return i}):[];return{...t,toolId:typeof t.toolId=="string"?t.toolId:"",toolStatus:["creating","ready","failed"].includes(t.toolStatus)?t.toolStatus:"",runId:typeof t.runId=="string"?t.runId:"",currentStep:typeof t.currentStep=="string"?t.currentStep:"",sourceCommitSha:typeof t.sourceCommitSha=="string"?t.sourceCommitSha:"",steps:n,progressError:typeof t.progressError=="string"?t.progressError:"",logTail:typeof t.logTail=="string"?t.logTail:"",logTruncated:t.logTruncated===!0,logUpdatedAt:typeof t.logUpdatedAt=="string"?t.logUpdatedAt:null,logError:typeof t.logError=="string"?t.logError:""}}function uCe(e){if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironmentManifest"));const t=e;if(!["agentkit.studio/v3","agentkit.studio/v1alpha1"].includes(t.apiVersion)||t.kind!=="Environment"||!t.metadata||typeof t.metadata.id!="string"||typeof t.metadata.name!="string"||typeof t.metadata.version!="string"||typeof t.metadata.description!="string"||!t.spec||typeof t.spec.image!="string"||!["ubuntu","aio-sandbox","codex-sandbox"].includes(t.spec.baseEnvironment)||typeof t.spec.baseImage!="string"||!["ubuntu-22.04","ubuntu-24.04"].includes(t.spec.operatingSystem)||!["python-3.10","python-3.12"].includes(t.spec.language)||t.spec.executionRuntime!=="veadk"||!Array.isArray(t.spec.packages)||!t.spec.packages.every(n=>typeof n=="string")||!Array.isArray(t.spec.capabilities)||!t.spec.capabilities.every(n=>typeof n=="string")||!Array.isArray(t.spec.skills)||!t.status||!cCe.has(t.status.phase)||typeof t.status.createdAt!="string"||typeof t.status.updatedAt!="string")throw new Error(V("client.invalidEnvironmentManifest"));return t}function dCe(e){if(e==null)return;if(!e||typeof e!="object")throw new Error(V("client.invalidImageRepository"));const t=e;if(typeof t.region!="string"||typeof t.registry!="string"||typeof t.namespace!="string"||typeof t.repository!="string")throw new Error(V("client.invalidImageRepository"));return t}function UZe(e){if(e==null)return;if(!e||typeof e!="object")throw new Error(V("client.invalidCodeRepository"));const t=e;if(typeof t.repositoryUrl!="string"||t.ref!==void 0&&typeof t.ref!="string"||typeof t.dockerfilePath!="string")throw new Error(V("client.invalidCodeRepository"));return t}function QZe(e){const t=dCe(e);if(!t)return;const n=e;if(typeof n.reference!="string")throw new Error(V("client.invalidImageSource"));return{...t,reference:n.reference}}function PU(e){if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironment"));const t=e;if(typeof t.id!="string"||typeof t.name!="string"||typeof t.description!="string"||t.baseEnvironment!==void 0&&t.baseEnvironment!=="ubuntu"&&t.baseEnvironment!=="aio-sandbox"&&t.baseEnvironment!=="codex-sandbox"||t.operatingSystem!=="ubuntu-22.04"&&t.operatingSystem!=="ubuntu-24.04"||t.language!=="python-3.10"&&t.language!=="python-3.12"||!Array.isArray(t.optionIds)||!t.optionIds.every(n=>typeof n=="string")||t.selectedSkills!==void 0&&!Array.isArray(t.selectedSkills)||typeof t.dockerfile!="string"||typeof t.createdAt!="string"||typeof t.updatedAt!="string")throw new Error(V("client.invalidEnvironment"));return{...t,baseEnvironment:t.baseEnvironment==="aio-sandbox"?"aio-sandbox":t.baseEnvironment==="codex-sandbox"?"codex-sandbox":"ubuntu",selectedSkills:t.selectedSkills??[],gitSource:UZe(t.gitSource),containerRepository:dCe(t.containerRepository),imageSource:QZe(t.imageSource),latestVersion:IU(t.latestVersion)}}function fCe(e){if(!e||typeof e!="object")throw new Error(V("client.invalidWorkspace"));const t=e;if(typeof t.id!="string"||typeof t.name!="string"||typeof t.description!="string"||!Array.isArray(t.environmentIds)||!t.environmentIds.every(n=>typeof n=="string")||typeof t.createdAt!="string"||typeof t.updatedAt!="string")throw new Error(V("client.invalidWorkspace"));return t}async function DU(e){const t=await Lt("/web/workspaces",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadWorkspacesFailed")));const n=await t.json();if(!Array.isArray(n.items))throw new Error(V("client.invalidWorkspaceList"));return n.items.map(fCe)}async function hCe(e,t,n,i){const r=await Lt(e,{method:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(n),signal:i});if(!r.ok)throw new Error(await dn(r,V("client.saveWorkspaceFailed")));return fCe(await r.json())}function pCe(e,t){return hCe("/web/workspaces","POST",e,t)}function mCe(e,t,n){return hCe(`/web/workspaces/${encodeURIComponent(e)}`,"PATCH",t,n)}async function gCe(e,t){const n=await Lt(`/web/workspaces/${encodeURIComponent(e)}`,{method:"DELETE",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.deleteWorkspaceFailed")))}async function EC(e){const t=await Lt("/web/v3/environments",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadEnvironmentsFailed")));const n=await t.json();if(!Array.isArray(n.items))throw new Error(V("client.invalidEnvironmentList"));return n.items.map(PU)}async function bCe(e,t){const n=await Lt("/web/v3/environment-repositories/inspect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e),signal:t});if(!n.ok)throw new Error(await dn(n,V("client.probeRepositoryFailed")));const i=await n.json();if(typeof i.repositoryUrl!="string"||typeof i.ref!="string"||typeof i.commitSha!="string"||!Array.isArray(i.dockerfiles)||!i.dockerfiles.every(r=>typeof r=="string"))throw new Error(V("client.invalidRepositoryProbe"));return i}async function yCe(e,t){const n=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/share-code`,{method:"POST",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.exportEnvironmentCodeFailed")));const i=await n.json();if(typeof i.shareCode!="string"||typeof i.name!="string")throw new Error(V("client.invalidEnvironmentCode"));return i}async function vCe(e,t){const n=await Lt("/web/v3/environment-share-codes/inspect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shareCodes:e}),signal:t});if(!n.ok)throw new Error(await dn(n,V("client.inspectEnvironmentCodeFailed")));const i=await n.json();if(!Array.isArray(i.items))throw new Error(V("client.invalidEnvironmentCodeInspection"));return i.items.map(r=>{if(!r||typeof r!="object")throw new Error(V("client.invalidEnvironmentCodeInspection"));const s=r,a=s.status==="valid"||s.valid===!0?"valid":s.status==="invalid"||s.valid===!1?"invalid":null;if(!Number.isInteger(s.index)||a===null||s.name!==void 0&&typeof s.name!="string"||s.error!==void 0&&typeof s.error!="string")throw new Error(V("client.invalidEnvironmentCodeInspection"));return{index:s.index,status:a,name:s.name??"",error:s.error??""}})}async function xCe(e,t){const n=await Lt("/web/v3/environment-share-codes/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shareCodes:e}),signal:t});if(!n.ok)throw new Error(await dn(n,V("client.importEnvironmentCodeFailed")));const i=await n.json();if(!Array.isArray(i.items))throw new Error(V("client.invalidEnvironmentCodeImport"));return i.items.map(r=>{if(!r||typeof r!="object")throw new Error(V("client.invalidEnvironmentCodeImport"));const s=r;if(!Number.isInteger(s.index)||!(s.status==="created"||s.status==="duplicate"||s.status==="failed")||s.name!==void 0&&typeof s.name!="string"||s.error!==void 0&&typeof s.error!="string")throw new Error(V("client.invalidEnvironmentCodeImport"));return{index:s.index,status:s.status,name:s.name??"",environment:s.environment===void 0||s.environment===null?void 0:PU(s.environment),error:s.error??""}})}async function wCe(e,t,n,i){let r;try{r=await Lt(e,{method:t,headers:{"Content-Type":"application/json"},body:JSON.stringify(n),signal:i})}catch(s){throw s instanceof DOMException&&s.name==="AbortError"?s:s instanceof TypeError?new Error(V("client.studioUnavailable")):s}if(!r.ok)throw new Error(await dn(r,V("client.saveEnvironmentFailed")));return PU(await r.json())}function OCe(e,t){return wCe("/web/v3/environments","POST",e,t)}function kCe(e,t,n){return wCe(`/web/v3/environments/${encodeURIComponent(e)}`,"PATCH",t,n)}async function SCe(e,t){const n=await Lt(`/web/v3/environments/${encodeURIComponent(e)}`,{method:"DELETE",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.deleteEnvironmentFailed")))}async function G$(e,t){const n=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/build`,{method:"POST",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.startEnvironmentBuildFailed")));const i=IU(await n.json());if(!i)throw new Error(V("client.invalidEnvironmentBuild"));return i}async function ECe(e,t,n={}){const i=n.includeLogs?"?includeLogs=true":"",r=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/builds/${encodeURIComponent(t)}${i}`,{signal:n.signal});if(!r.ok)throw new Error(await dn(r,V("client.loadEnvironmentBuildFailed")));const s=IU(await r.json());if(!s)throw new Error(V("client.invalidEnvironmentBuild"));return s}async function CCe(e,t,n){const i=await Lt(`/web/v3/environments/${encodeURIComponent(e)}/builds/${encodeURIComponent(t)}/manifest`,{signal:n});if(!i.ok)throw new Error(await dn(i,V("client.loadEnvironmentManifestFailed")));return uCe(await i.json())}function cY(e){if(!e||typeof e!="object")throw new Error(V("client.invalidEnvironmentResource"));const t=e;if(t.source!=="provided"&&t.source!=="managed"||typeof t.consoleUrl!="string")throw new Error(V("client.invalidEnvironmentResource"));return t}async function TCe(e){const t=await Lt("/web/v3/environment-resources",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadEnvironmentResourcesFailed")));const n=await t.json();if(n.provider!=="volcengine"&&n.provider!=="byteplus"||typeof n.region!="string")throw new Error(V("client.invalidEnvironmentResource"));return{provider:n.provider,region:n.region,codePipeline:cY(n.codePipeline),containerRegistry:cY(n.containerRegistry)}}async function zZe(e,t){const n=await Lt(`/web/system-info/sandbox-tools/${encodeURIComponent(e)}/model-env`,{method:"POST",signal:t});if(!n.ok)throw new Error(await dn(n,V("client.updateCodexSandboxFailed")));const i=await n.json();if(i.kind!=="codex"&&i.kind!=="codex_snapshot"||typeof i.toolId!="string"||typeof i.updated!="boolean")throw new Error(V("client.invalidCodexSandboxUpdate"));return i}async function GI(e){const t=await Lt("/web/identity/user-pools",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadUserPoolsFailed")));const n=await t.json();if(!Array.isArray(n.items))throw new Error(V("client.invalidUserPoolList"));return n.items.map(i=>{if(!i||typeof i!="object"||typeof i.uid!="string"||typeof i.name!="string"||typeof i.domain!="string"||typeof i.region!="string"||typeof i.isCurrent!="boolean")throw new Error(V("client.invalidUserPoolList"));return i})}class uY extends Error{constructor(t,n){super(n),this.status=t,this.name="DeploymentRecoveryHttpError"}}const Qk=new Map;function VZe(e){if(typeof e=="string")return e?{message:e}:null;if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n=typeof t.message=="string"?t.message:typeof t.error=="string"?t.error:"";return n?{message:n,phase:typeof t.phase=="string"?t.phase:void 0,runtimeId:typeof t.runtimeId=="string"?t.runtimeId:void 0,logPath:typeof t.logPath=="string"?t.logPath:void 0}:null}class zk extends Error{constructor(t){super(t.message),this.detail=t,this.name="GithubCicdPipelineError"}}async function kp(e){const t=await e.text().catch(()=>"");if(t)try{const n=JSON.parse(t),i=VZe(n.detail??n.error);if(i)return new zk(i)}catch{return new zk({message:t})}return new zk({message:V("client.syncGithubFailed",{status:e.status})})}async function ACe(e){const t=await Lt("/web/github-delivery/source-sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project:e.project,githubUrl:e.githubUrl,githubToken:e.githubToken,baseBranch:e.baseBranch,region:e.region,cloudProvider:e.cloudProvider})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function _Ce(e){const t=await Lt("/web/github-delivery/cicd-pipeline",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({githubUrl:e.githubUrl,githubToken:e.githubToken,baseBranch:e.baseBranch,runtimeName:e.runtimeName,runtimeId:e.runtimeId,region:e.region,cloudProvider:e.cloudProvider,projectPath:e.projectPath??".",volcengineAccessKey:e.volcengineAccessKey,volcengineSecretKey:e.volcengineSecretKey,volcengineSessionToken:e.volcengineSessionToken??""})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function jCe(e){const t=await Lt("/web/github-delivery/init-main",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({project:e.project,githubUrl:e.githubUrl,githubToken:e.githubToken,baseBranch:e.baseBranch,runtimeName:e.runtimeName,runtimeId:e.runtimeId,region:e.region,cloudProvider:e.cloudProvider,projectPath:e.projectPath??".",volcengineAccessKey:e.volcengineAccessKey,volcengineSecretKey:e.volcengineSecretKey,volcengineSessionToken:e.volcengineSessionToken??""})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function HZe(e){const t=await Lt("/web/github-delivery/source-sync/cicd",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({pipelineId:e.pipelineId,runtimeName:e.runtimeName,runtimeId:e.runtimeId,region:e.region,cloudProvider:e.cloudProvider,projectPath:e.projectPath??".",volcengineAccessKey:e.volcengineAccessKey,volcengineSecretKey:e.volcengineSecretKey,volcengineSessionToken:e.volcengineSessionToken??""})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function NCe(e){const t=await Lt(`/web/github-cicd/runtime-binding?runtimeId=${encodeURIComponent(e)}`);if(!t.ok)throw await kp(t);const n=await t.json();return n.pipelineId?n:null}async function B_(e){const t=await Lt(`/web/github-delivery/versions?runtimeId=${encodeURIComponent(e)}`);if(!t.ok)throw await kp(t);return t.json()}async function RCe(e){const t=await Lt("/web/github-delivery/rollback-pr",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await kp(t);return t.json()}async function MU(e){const t=await Lt("/web/github-cicd/runtime-binding",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw await kp(t);return t.json()}async function ICe(e){const t=await Lt("/web/github-cicd/runtime-sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e.runtimeId,project:e.project})},{},0);if(!t.ok)throw await kp(t);return t.json()}async function Wy(e,t,n,i){var h,m,g,b,v;const r=i==null?void 0:i.taskId,s=r?new AbortController:void 0;r&&s&&Qk.set(r,s);const a=()=>{r&&Qk.get(r)===s&&Qk.delete(r)},l=async y=>{if(_Ee(y))throw y;if(!r||!(i!=null&&i.runtimeId)||typeof i.baseRuntimeVersion!="number")throw new D_({taskId:r,cause:y});const w=await cZe({signal:s==null?void 0:s.signal,shouldRetry:x=>!(x instanceof uY)||x.status===404||x.status===408||x.status===429||x.status>=500,load:async x=>{const O=await Lt("/web/deploy-agentkit/status",{method:"POST",headers:{"Content-Type":"application/json"},signal:x,body:JSON.stringify({taskId:r,runtimeId:i.runtimeId,runtimeName:i.runtimeName,appName:i.appName??e,region:n.region,projectName:n.projectName,baseRuntimeVersion:i.baseRuntimeVersion})},{},3e4);if(!O.ok)throw new uY(O.status,await dn(O,V("client.deploymentFailed")));return O.json()}});if(!w)throw new D_({taskId:r,cause:y});return w};let c=null,u=null;try{const y=!!(i!=null&&i.migrationTaskId);(h=i==null?void 0:i.onStage)==null||h.call(i,{level:"info",phase:"upload",message:V(y?"client.validatingMigrationArtifact":"client.uploadingCodePackage"),pct:0}),c=await Lt("/web/deploy-agentkit",{method:"POST",headers:{"Content-Type":"application/json"},signal:s==null?void 0:s.signal,body:JSON.stringify({name:e,files:y?[]:t,config:n,taskId:r,migrationTaskId:i==null?void 0:i.migrationTaskId,runtimeId:i==null?void 0:i.runtimeId,runtimeName:i==null?void 0:i.runtimeName,appName:i==null?void 0:i.appName,editMode:i==null?void 0:i.editMode,draft:i==null?void 0:i.draft,updateEtag:i==null?void 0:i.updateEtag,baseRuntimeVersion:i==null?void 0:i.baseRuntimeVersion,removeRuntimeEnvKeys:i==null?void 0:i.removeRuntimeEnvKeys,mcpSecretValues:i==null?void 0:i.mcpSecretValues,mcpCredentialReuses:i==null?void 0:i.mcpCredentialReuses,sessionStorage:i==null?void 0:i.sessionStorage,minInstance:i==null?void 0:i.minInstance,maxInstance:i==null?void 0:i.maxInstance,createEvaluationSets:i==null?void 0:i.createEvaluationSets,description:aZe((i==null?void 0:i.description)??""),authentication:i==null?void 0:i.authentication,im:i==null?void 0:i.im,envs:i==null?void 0:i.envs,resources:i==null?void 0:i.resources,source:(i==null?void 0:i.source)??(i!=null&&i.migrationTaskId?{kind:"migration",migrationId:i.migrationTaskId}:{kind:"inlineFiles"}),harnessSidecar:i==null?void 0:i.harnessSidecar,environment:i==null?void 0:i.environment})},{},0),(m=i==null?void 0:i.onStage)==null||m.call(i,{level:"success",phase:"upload",message:V(y?"client.migrationArtifactValidated":"client.codePackageUploaded"),pct:100})}catch(y){try{u=await l(y)}finally{a()}}if(c&&!c.ok){const y=await dn(c,V("client.deploymentFailed"));throw a(),new Error(y)}if(c)try{for await(const y of zI(c)){const w=y;if(w&&w.done){u=w;break}w&&w.message&&((g=i==null?void 0:i.onStage)==null||g.call(i,w))}}catch(y){try{u=await l(y)}finally{a()}}if(u)a();else try{u=await l()}finally{a()}if(!u.success){const y=new Error(u.error||V("client.deploymentFailed"));throw AEe(y)?new D_({taskId:r,cause:y}):y}if(!u.agentName)throw new Error(V("client.deploymentMissingAgentName"));if(!u.runtimeId&&!u.url)throw new Error(V("client.deploymentMissingConnection"));const d=(b=u.runtimeName)!=null&&b.trim()?u.agentName:e,f=((v=u.runtimeName)==null?void 0:v.trim())||u.agentName;return{apikey:u.apikey??"",url:u.url??"",agentName:d,runtimeName:f,runtimeId:u.runtimeId,consoleUrl:u.consoleUrl,region:u.region,version:u.version,warnings:u.warnings,feishuChannel:u.feishuChannel}}async function PCe(e){var n;const t=await Lt("/web/cancel-deploy-agentkit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({taskId:e})});if(!t.ok){const i=await t.text().catch(()=>"");throw new Error(i||V("client.cancelDeploymentFailed",{status:t.status}))}(n=Qk.get(e))==null||n.abort(),Qk.delete(e)}async function qZe(e=xU){const t=await Lt(`/web/my-runtimes?region=${encodeURIComponent(e)}`);if(!t.ok)throw new Error(V("client.loadFailed",{status:t.status}));return(await t.json()).runtimes??[]}const HS={title:"AgentKit Studio",logoUrl:""},X$={enabled:!1},U5={studio:!1,version:"",provider:"volcengine",branding:HS,features:{newChat:!0,search:!0,skillCenter:!0,history:!0,addAgent:!0,manageAgents:!0,agentUsage:!1,addAgentkit:!0,generatedAgentTestRun:!0},defaultView:"chat",agentsSource:"local",telemetry:X$};function WZe(e){if(!e||typeof e!="object")return X$;const t=e;if(t.enabled!==!0||!t.studio||typeof t.studio!="object")return X$;const n=t.studio;return{enabled:!0,studio:{deployId:typeof n.deployId=="string"?n.deployId:"",userPoolId:typeof n.userPoolId=="string"?n.userPoolId:"",applicationId:typeof n.applicationId=="string"?n.applicationId:"",functionId:typeof n.functionId=="string"?n.functionId:"",region:typeof n.region=="string"?n.region:"",project:typeof n.project=="string"?n.project:"",version:typeof n.version=="string"?n.version:"",accountId:typeof n.accountId=="string"?n.accountId:"",accountIdResolutionError:typeof n.accountIdResolutionError=="string"?n.accountIdResolutionError:""}}}async function DCe(){var e,t;try{const n=await Lt("/web/ui-config");if(!n.ok)return U5;const i=await n.json(),r=typeof((e=i.branding)==null?void 0:e.logoUrl)=="string"?i.branding.logoUrl:HS.logoUrl,s=i.provider==="byteplus"?"byteplus":"volcengine";return $Ee(s),{studio:i.studio??!1,version:typeof i.version=="string"?i.version:"",provider:s,branding:{title:typeof((t=i.branding)==null?void 0:t.title)=="string"?i.branding.title:HS.title,logoUrl:r?ta(r):""},features:{...U5.features,...i.features??{}},defaultView:i.defaultView??"chat",agentsSource:i.agentsSource==="cloud"?"cloud":"local",telemetry:WZe(i.telemetry)}}catch{return U5}}const MCe={role:"user",telemetry:{userId:"",accountId:""},capabilities:{createAgents:!1,createPersonalAgents:!1,manageAgents:!1,runtimeScope:"mine",manageUsers:!1}};async function LCe(){var n,i,r,s,a,l;const e=await Lt("/web/access");if(!e.ok)throw new Error(V("client.loadPermissionsFailed",{status:e.status}));const t=await e.json();if(!["super_admin","admin","developer","user"].includes(t.role)||typeof((n=t.telemetry)==null?void 0:n.userId)!="string"||t.telemetry.accountId!==void 0&&typeof t.telemetry.accountId!="string"||typeof((i=t.capabilities)==null?void 0:i.createAgents)!="boolean"||typeof((r=t.capabilities)==null?void 0:r.createPersonalAgents)!="boolean"||typeof((s=t.capabilities)==null?void 0:s.manageAgents)!="boolean"||((a=t.capabilities)==null?void 0:a.manageUsers)!==void 0&&typeof t.capabilities.manageUsers!="boolean"||!["all","mine"].includes((l=t.capabilities)==null?void 0:l.runtimeScope))throw new Error(V("client.invalidPermissionResponse"));return t}async function $Ce(e,t){const n=new URLSearchParams;e&&n.set("targetVersion",e),t&&n.set("startedAt",String(t));const i=n.size?`?${n.toString()}`:"",r=await Lt(`/web/studio-update${i}`);if(!r.ok)throw new Error(V("client.checkStudioUpdateFailed",{status:r.status}));return await r.json()}async function FCe(){const e=await Lt("/web/studio-update/permissions");if(!e.ok){let t="";try{const n=await e.json();t=typeof n.detail=="string"?n.detail:""}catch{t=""}throw new Error(t||V("client.studioUpdatePreflightFailed",{status:e.status}))}return await e.json()}async function BCe(e){const t=await Lt("/web/studio-update",{method:"POST",headers:{"Content-Type":"application/json","X-VeADK-Studio-Update":"1"},body:JSON.stringify({version:e})},{},hr);if(!t.ok){let n="";try{const i=await t.json();n=typeof i.detail=="string"?i.detail:""}catch{n=""}throw new Error(n||V("client.submitStudioUpdateFailed",{status:t.status}))}return await t.json()}async function UCe({runtimeId:e,region:t,appName:n,page:i=1,pageSize:r=20,signal:s}){const a=new URLSearchParams({runtimeId:e,region:t,appName:n,page:String(i),pageSize:String(r)}),l=await Lt(`/web/agent-usage?${a.toString()}`,{signal:s});if(!l.ok)throw new Error(await dn(l,V("client.loadAgentUsageFailed")));const c=l.headers.get("content-type")||V("client.notProvided"),u=c.toLowerCase();if(!u.includes("application/json")&&!u.includes("+json"))throw new Error(V("client.agentUsageNonJson",{status:l.status,contentType:c})+V("client.checkStudioGateway"));try{return await l.json()}catch{throw new Error(V("client.agentUsageInvalidJson",{status:l.status,contentType:c})+V("client.retryCheckGateway"))}}function Sp(e=""){return`/web/cronjobs${e?`/${encodeURIComponent(e)}`:""}`}async function Y$(e){const t=await Lt(Sp(),{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadCronJobsFailed")));const n=await t.json();return Array.isArray(n)?n:n.items??[]}async function KZe(e,t){const n=await Lt(Sp(e),{signal:t});if(!n.ok)throw new Error(await dn(n,V("client.loadCronJobFailed")));return await n.json()}async function QCe(e){const t=await Lt(Sp(),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw new Error(await dn(t,V("client.createCronJobFailed")));return await t.json()}async function zCe(e,t){const n=await Lt(`${Sp(e)}/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!n.ok)throw new Error(await dn(n,V("client.updateCronJobFailed")));return await n.json()}async function VCe(e,t){const n=t?"enable":"disable",i=await Lt(`${Sp(e)}/${n}`,{method:"POST"});if(!i.ok)throw new Error(await dn(i,V(t?"client.enableCronJobFailed":"client.pauseCronJobFailed")));return await i.json()}async function HCe(e){const t=await Lt(`${Sp(e)}/run`,{method:"POST"});if(!t.ok)throw new Error(await dn(t,V("client.runCronJobFailed")));return await t.json()}async function Z$(e,t){const n=await Lt(`${Sp(e)}/runs`,{signal:t});if(!n.ok)throw new Error(await dn(n,V("client.loadCronHistoryFailed")));const i=await n.json();return Array.isArray(i)?i:i.items??[]}async function qCe(e,t){const n=await Lt(`${Sp(e)}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST"});if(!n.ok)throw new Error(await dn(n,V("client.stopCronRunFailed")));return await n.json()}async function WCe(e){const t=await Lt(Sp(e),{method:"DELETE"});if(!t.ok)throw new Error(await dn(t,V("client.deleteCronJobFailed")))}class LU extends Error{constructor(t,n){super(t),this.status=n,this.name="RuntimeListError"}}async function zw(e={}){const t=new URLSearchParams({scope:e.scope??"all",page_size:String(e.pageSize??30),region:e.region??"all"});e.nextToken&&t.set("next_token",e.nextToken);const n=await Lt(`/web/runtimes?${t.toString()}`,{signal:e.signal});if(!n.ok){const r=await dn(n,V("client.loadRuntimeFailed"));throw new LU(r,n.status)}const i=await n.json();return{runtimes:i.runtimes??[],nextToken:i.nextToken??""}}async function Gx(e,t,n={}){if(n.preferCached){const i=CU(e,t,n.currentVersion),r=ix.get(i);if(r&&r.expiresAt>Date.now())return[...r.apps];r&&ix.delete(i)}try{const i={runtimeId:e,region:t,runtimeVersion:n.currentVersion};return n.retryProbe&&(i.retryProbe=!0),await SC("","",i,n.signal,n.timeoutMs)}catch(i){if(i instanceof Uw||i instanceof po||i instanceof Error)throw i;return null}}async function KCe(e,t){const n=new URLSearchParams({region:t}),i=await Lt(`/web/runtime-tool-channel/${encodeURIComponent(e)}/capabilities?${n.toString()}`);if(!i.ok)throw new po(await dn(i,V("client.loadLocalToolsFailed")),!1,!0);return await i.json()}async function GCe(e,t){const n=new URLSearchParams({region:t}),i=await Lt(`/web/runtime-route-channel/${encodeURIComponent(e)}/connect?${n.toString()}`,{method:"POST"});if(!i.ok)throw new po(await dn(i,V("client.connectDynamicRouteFailed")),!1,!0);return await i.json()}async function XCe(e,t,n={}){const i={runtimeId:e,region:t};n.retryProbe&&(i.retryProbe=!0);const r=await Lt("/.well-known/agent-card.json",{},i),s=await FEe(r);if(s==="runtime_access_denied")throw new Uw;if(s==="runtime_private_endpoint_unreachable")throw new po(DEe());if(["runtime_proxy_connect_error","runtime_proxy_timeout"].includes(s))throw new po(MEe());if(r.status===404)return null;if(r.status===401||r.status===403)throw new po(V("client.a2aProbeDenied"));if(!r.ok)throw new Error(await dn(r,V("client.loadA2aCardFailed")));const a=await r.json().catch(()=>null),l=typeof(a==null?void 0:a.url)=="string"?a.url.trim():"";return l?{name:typeof(a==null?void 0:a.name)=="string"?a.name:"",description:typeof(a==null?void 0:a.description)=="string"?a.description:"",endpoint:l}:null}async function YCe(e,t){const n=new URLSearchParams({runtimeId:e,region:t}),i=await Lt(`/web/runtime-api-key/reveal?${n.toString()}`,{method:"POST",cache:"no-store"});if(!i.ok)throw new Error(await dn(i,V("client.loadRuntimeApiKeyFailed")));const r=await i.json();if(typeof r.apiKey!="string"||!r.apiKey)throw new Error(V("client.runtimeApiKeyMissing"));return r.apiKey}async function ZCe(e,t){const n=await Lt("/web/delete-runtime",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e,region:t})});if(!n.ok){const i=await n.text().catch(()=>"");throw new Error(i||V("client.deleteFailed",{status:n.status}))}}async function JCe({runtimeId:e,region:t,appName:n,etag:i,signal:r}){const s=await Lt("/web/runtime-mcp-credentials",{method:"POST",cache:"no-store",signal:r,headers:{"Content-Type":"application/json"},body:JSON.stringify({runtimeId:e,region:t,appName:n,etag:i})});if(!s.ok)throw new Error(await dn(s,V("client.loadMcpCredentialsFailed")));const a=await s.json().catch(()=>null);if(!Array.isArray(a==null?void 0:a.credentials))throw new Error(V("client.invalidMcpCredentials"));return a.credentials.map(l=>{if(!l||typeof l!="object")throw new Error(V("client.invalidMcpCredentials"));const c=l,u={agentName:c.agentName,name:c.name,url:c.url,authTokenEnv:c.authTokenEnv,value:c.value};if(Object.values(u).some(d=>typeof d!="string"))throw new Error(V("client.invalidMcpCredentials"));return u})}function U_({runtimeId:e,region:t,appName:n,currentVersion:i}){return qy(VS,t,e,i??"",(n==null?void 0:n.trim())??"")}async function GZe({runtimeId:e,region:t,appName:n,currentVersion:i,force:r=!1}){const s=new URLSearchParams({runtimeId:e,region:t});n&&s.set("appName",n),i!=null&&s.set("currentVersion",String(i)),r&&s.set("refresh","true");const a=await Lt(`/web/runtime-update-capability?${s.toString()}`);if(!a.ok)throw new Error(await XZe(a));return await a.json()}function XI({runtimeId:e,region:t,appName:n,currentVersion:i,signal:r,force:s=!1}){var u,d;const a={runtimeId:e,region:t,appName:n,currentVersion:i},l=U_(a);if(s&&Vr.delete(l),!s){const f=_g(Vr,l,Qw);if(f)return C2(Promise.resolve(f),r);const h=(u=Vr.get(l))==null?void 0:u.promise;if(h)return C2(h,r);if(n){const m=U_({...a,appName:""}),g=(d=Vr.get(m))==null?void 0:d.promise;if(g){let b;return b=g.then(v=>{var w,x,O,S,k;if(v.recoveryStatus==="preparing")return((w=Vr.get(l))==null?void 0:w.promise)===b&&Vr.delete(l),v;const y=((O=(x=v.agent)==null?void 0:x.appName)==null?void 0:O.trim())??"";return y&&y!==n.trim()?(((S=Vr.get(l))==null?void 0:S.promise)===b&&Vr.delete(l),XI(a)):(((k=Vr.get(l))==null?void 0:k.promise)===b&&Vr.set(l,{value:v,updatedAt:Date.now()}),v)},v=>{var y;throw((y=Vr.get(l))==null?void 0:y.promise)===b&&Vr.delete(l),v}),Vr.set(l,{promise:b,updatedAt:0}),C2(b,r)}}}let c;return c=GZe({...a,force:s}).then(f=>{var h,m,g,b,v;if(f.recoveryStatus==="preparing")return((h=Vr.get(l))==null?void 0:h.promise)===c&&Vr.delete(l),f;if(((m=Vr.get(l))==null?void 0:m.promise)===c){Vr.set(l,{value:f,updatedAt:Date.now()});const y=new Set(["",((b=(g=f.agent)==null?void 0:g.appName)==null?void 0:b.trim())??""]);for(const w of y){const x=U_({...a,appName:w});x!==l&&!((v=Vr.get(x))!=null&&v.promise)&&Vr.set(x,{value:f,updatedAt:Date.now()})}}return f},f=>{var h;throw((h=Vr.get(l))==null?void 0:h.promise)===c&&Vr.delete(l),f}),Vr.set(l,{promise:c,updatedAt:0}),C2(c,r)}function J$({runtimeId:e,region:t,appName:n,currentVersion:i}){return _g(Vr,U_({runtimeId:e,region:t,appName:n,currentVersion:i}),Qw)}function eF(e){return XI(e).then(()=>{},()=>{})}function tF(e,t){if(!e){Vr.clear();return}for(const n of Vr.keys()){const[i,r,s]=n.split("");i===VS&&s===e&&(!t||r===t)&&Vr.delete(n)}}async function XZe(e){const t=await e.json().catch(()=>null),n=typeof(t==null?void 0:t.detail)=="string"?t.detail:"";return e.status===403?V("client.runtimeManageForbidden"):e.status===404?V(n==="runtime_not_found"?"client.runtimeNotFound":"client.runtimeUnavailable"):V("client.checkRuntimeUpdateFailed",{status:e.status})}async function YZe(e,t){let n=null;for(const i of kC(t)){const r=await Lt(`/web/runtime-detail?runtimeId=${encodeURIComponent(e)}®ion=${encodeURIComponent(i)}`);if(r.ok)return r.json();n=new Error(await dn(r,V("client.loadRuntimeDetailFailed")))}throw n??new Error(V("client.loadRuntimeDetailFailed"))}async function $U(e,t="cn-beijing",n={}){const i=qy(e,t||"cn-beijing"),r=_g(vb,i,Qw);if(!n.force&&r)return r;const s=vb.get(i);if(!n.force&&(s!=null&&s.promise))return s.promise;const a=YZe(e,t).then(l=>TU(vb,i,l));vb.set(i,{...s,promise:a,updatedAt:(s==null?void 0:s.updatedAt)??0});try{return await a}finally{const l=vb.get(i);(l==null?void 0:l.promise)===a&&vb.set(i,{value:l.value,updatedAt:l.updatedAt})}}function eTe(e,t="cn-beijing"){return _g(vb,qy(e,t||"cn-beijing"),Qw)}function tTe(e,t="cn-beijing"){$U(e,t).catch(()=>{})}async function Vk(e){const t=await Lt("/web/generated-agent-projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({draft:e})});if(!t.ok)throw new Error(await dn(t,V("client.generateProjectFailed")));return t.json()}const ZZe=19e4,JZe=12e4;async function nTe(e){const t=await Lt("/web/generated-agent-drafts",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({requirement:e})},{},ZZe);if(!t.ok)throw new Error(await dn(t,V("client.generateAgentConfigFailed")));return QI(t,V("client.generateAgentConfigFailed"))}async function iTe(e,t){const n=await Lt("/web/generated-agent-test-runs",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({draft:e,runtimeId:t==null?void 0:t.runtimeId,runtimeRegion:t==null?void 0:t.region,mcpCredentialReuses:t==null?void 0:t.mcpCredentialReuses})},{},JZe);if(!n.ok)throw new Error(await dn(n,V("client.createDebugRunFailed")));return QI(n,V("client.createDebugRunFailed"))}async function rTe(e,t){const n=await Lt(`/web/generated-agent-test-runs/${e}/sessions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:t})});if(!n.ok)throw new Error(await dn(n,V("client.createDebugSessionFailed")));return(await QI(n,V("client.createDebugSessionFailed"))).id}async function sTe(e,t){const n=await Lt(`/web/generated-agent-test-runs/${encodeURIComponent(e)}/trace/session/${encodeURIComponent(t)}`);if(!n.ok)throw new Error(await dn(n,V("client.loadDebugTraceFailed")));const i=await QI(n,V("client.loadDebugTraceFailed"));if(!Array.isArray(i))throw new Error(V("client.invalidDebugTrace"));return i}async function*oTe({runId:e,userId:t,sessionId:n,text:i,signal:r}){const s=i.trim()?[{text:i}]:[],a=iCe(r);let l;try{l=await Lt(`/web/generated-agent-test-runs/${e}/run_sse`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({user_id:t,session_id:n,new_message:{role:"user",parts:s},streaming:!0}),signal:a.signal},{},0)}catch(c){throw a.cleanup(),a.timedOut()?new Error(Kx()):c}if(!l.ok)throw a.cleanup(),new Error(await dn(l,V("client.debugRunFailed")));try{for await(const c of zI(l))a.clearDeadline(),yield c}catch(c){throw a.timedOut()?new Error(Kx()):c}finally{a.cleanup()}}async function av(e){const t=await Lt(`/web/generated-agent-test-runs/${e}`,{method:"DELETE"});if(!t.ok&&t.status!==404)throw new Error(await dn(t,V("client.cleanupDebugRunFailed")))}function aTe(e){if(!e||typeof e!="object")throw new Error(V("client.invalidSandboxVersion"));const t=e;if(typeof t.toolId!="string"||typeof t.error!="string")throw new Error(V("client.invalidSandboxVersion"));if(!t.error&&(t.provider!=="volcengine"&&t.provider!=="byteplus"||typeof t.region!="string"||typeof t.status!="string"||typeof t.currentImage!="string"||typeof t.latestImage!="string"||typeof t.needsImageUpdate!="boolean"||typeof t.canUpdate!="boolean"||typeof t.needsModelEnvUpdate!="boolean"||typeof t.canUpdateModelEnv!="boolean"||typeof t.modelEnvError!="string"))throw new Error(V("client.invalidSandboxVersion"));return t}async function lTe(e){const t=await Lt("/web/system-info/sandbox-tools/updates",{signal:e});if(!t.ok)throw new Error(await dn(t,V("client.loadSandboxVersionsFailed")));const n=await t.json();if(!Array.isArray(n.tools))throw new Error(V("client.invalidSandboxVersion"));return n.tools.map(aTe)}async function cTe(e){const t=await Lt(`/web/system-info/sandbox-tools/${encodeURIComponent(e)}/update`,{method:"POST"},{},33e4);if(!t.ok)throw new Error(await dn(t,V("client.updateSandboxFailed")));const n=await t.json();if(typeof n.updated!="boolean")throw new Error(V("client.invalidSandboxUpdate"));return{updated:n.updated,state:aTe(n.state)}}const eJe=Object.freeze(Object.defineProperty({__proto__:null,DEFAULT_SITE_BRANDING:HS,DEFAULT_STUDIO_ACCESS:MCe,GithubCicdPipelineError:zk,RuntimeAccessDeniedError:Uw,RuntimeListError:LU,RuntimeProbeError:po,attachGithubDeliveryCicdToSourceSync:HZe,bindGithubCicdRuntime:MU,buildEnvironment:G$,cancelAgentkitDeployment:PCe,cancelCronJobRun:qCe,checkRuntimeNameAvailability:KI,clearMessageFeedbackCache:jEe,clearRemoteApps:REe,componentSearch:eCe,createCronJob:QCe,createEnvironment:OCe,createGeneratedAgentTestRun:iTe,createGeneratedAgentTestSession:rTe,createGithubCicdPipeline:ACe,createGithubDeliveryCicdPipeline:_Ce,createGithubDeliveryRollbackPr:RCe,createSession:BEe,createWorkspace:pCe,deleteAgentFeedbackCases:qEe,deleteCronJob:WCe,deleteEnvironment:SCe,deleteGeneratedAgentTestRun:av,deleteMedia:$_,deleteRuntime:ZCe,deleteSession:V$,deleteSessionMedia:H$,deleteWorkspace:gCe,deployAgentkitProject:Wy,downloadArtifact:_U,ensureRuntimeRouteChannel:GCe,exportEnvironmentShareCode:yCe,fetchRemoteApps:SC,generateAgentDraftFromRequirement:nTe,generateAgentProject:Vk,getAgentFeedbackCases:WI,getAgentInfo:W$,getAgentOptimizations:QEe,getAgentUsage:UCe,getAutomaticEvaluationStatuses:z$,getCachedAgentFeedbackCases:zEe,getCachedRuntimeAgentInfo:ZEe,getCachedRuntimeDetail:eTe,getCachedRuntimeUpdateCapability:J$,getCronJob:KZe,getEnvironmentBuild:ECe,getEnvironmentManifest:CCe,getEnvironmentResources:TCe,getGeneratedAgentTestTrace:sTe,getGithubCicdRuntimeBinding:NCe,getGithubDeliveryVersions:B_,getMediaCapabilities:$Ze,getMyRuntimes:qZe,getRuntimeAgentInfo:NU,getRuntimeDetail:$U,getRuntimeMcpCredentials:JCe,getRuntimeStudioToolCapabilities:KCe,getRuntimeUpdateCapability:XI,getRuntimes:zw,getSandboxImageUpdates:lTe,getSession:qI,getSessionTrace:kN,getStudioAccess:LCe,getStudioUpdatePermissions:FCe,getStudioUpdateStatus:$Ce,getSystemInfo:lCe,getUiConfig:DCe,httpErrorMessage:dn,importEnvironmentShareCodes:xCe,initializeGithubDeliveryMain:jCe,inspectEnvironmentRepository:bCe,inspectEnvironmentShareCodes:vCe,invalidateRuntimeUpdateCapabilityCache:tF,listApps:PEe,listCronJobRuns:Z$,listCronJobs:Y$,listDeploymentResources:rCe,listEnvironments:EC,listIdentityUserPools:GI,listModelApiKeys:EU,listModelOptions:Bw,listSessions:AU,listWorkspaces:DU,mediaContentUrl:XEe,parseEnvironmentManifest:uCe,parseEnvironmentShareCodes:RU,parsePreparedSessionEnvironmentMounts:sCe,prefetchAgentFeedbackCases:MZe,prefetchRuntimeAgentInfo:JEe,prefetchRuntimeDetail:tTe,prefetchRuntimeUpdateCapability:eF,prepareSessionEnvironmentMounts:oCe,previewArtifact:jU,probeRuntimeA2a:XCe,probeRuntimeApps:Gx,refreshAgentFeedbackCases:VEe,registerRemoteApp:NEe,revealModelApiKey:IEe,revealRuntimeApiKey:YCe,runCronJobNow:HCe,runGeneratedAgentTestSSE:oTe,runSSE:K$,runSseEmptyResponseError:nCe,runSseFirstEventTimeoutError:Kx,runSseIncompleteResponseError:F_,runtimeRegionCandidates:kC,setClientCloudProvider:$Ee,setCronJobEnabled:VCe,startStudioUpdate:BCe,studioFetch:pn,submitIssueFeedback:q$,submitMessageFeedback:UEe,syncGithubCicdRuntime:ICe,updateCodexSandboxToolModelEnv:zZe,updateCronJob:zCe,updateEnvironment:kCe,updateSandboxTool:cTe,updateWorkspace:mCe,uploadMedia:KEe,upsertCachedAgentFeedbackCase:L_,webSearch:tCe,writeEnvironmentShareCode:aCe},Symbol.toStringTag,{value:"Module"})),tJe="/web/sandbox/sessions",dY="/web/sandbox/codex-project-handoff",fY=3e4,Q5=33e4,nJe=6e4,iJe=6e5,rO=15e3,Oh=6e4,rJe=33e4,hY=3e4,sJe=60*60,nF=40;function YI(e){const t=e.trim().toLowerCase();return["ready","running","wakeable"].includes(t)?"ready":t}function FU(e){switch(e.trim().toLowerCase()){case"ready":return V("sandbox.status.ready");case"wakeable":return V("sandbox.status.wakeable");case"creating":return V("sandbox.status.creating");case"starting":case"initializing":return V("sandbox.status.starting");case"pending":return V("sandbox.status.pending");case"running":return V("sandbox.status.running");case"failed":case"error":return V("sandbox.status.failed");case"stopped":return V("sandbox.status.stopped");case"expired":return V("sandbox.status.expired");case"deleting":return V("sandbox.status.deleting");case"deleted":return V("sandbox.status.deleted");default:return V("sandbox.status.unknown")}}function Yr(e){const t=Ll(e);return t.has("Accept")||t.set("Accept","application/json"),t}class BU extends Error{constructor(n,i={}){var r;super(n);Jt(this,"code");Jt(this,"retryable");Jt(this,"publicMessage");Jt(this,"httpStatus");this.name="SandboxServiceError",this.code=i.code??"",this.retryable=i.retryable===!0,this.publicMessage=((r=i.publicMessage)==null?void 0:r.trim())||n,this.httpStatus=i.httpStatus}}function oJe(e){return e instanceof BU?e.publicMessage:e instanceof Error&&e.name==="TimeoutError"?V("sandbox.developmentTimeout"):e instanceof TypeError?V("sandbox.developmentDisconnected"):V("sandbox.developmentFailed")}async function Es(e,t){const n=await e.text().catch(()=>"");let i={};try{i=JSON.parse(n)}catch{const d=V("common.fallbackWithHttpStatus",{fallback:t,status:e.status});return new Error(n?V("common.fallbackWithDetail",{fallback:d,detail:n}):d)}const r=i.detail,s=r&&typeof r=="object"?r:i,a=r&&typeof r=="object"&&"message"in r?r.message:r??i.error??i.message,l=typeof a=="string"?a:a==null?"":JSON.stringify(a),c=V("common.fallbackWithHttpStatus",{fallback:t,status:e.status}),u=l?V("common.fallbackWithDetail",{fallback:c,detail:l}):c;return new BU(u,{code:typeof s.code=="string"?s.code:"",retryable:s.retryable===!0,publicMessage:l||c,httpStatus:e.status})}async function pY(e,t){const n=await e.text().catch(()=>"");try{return JSON.parse(n)}catch{throw new Error(V("sandbox.invalidStudioResponse",{fallback:t}))}}function eb(e,t="codex",n=e.toolName==="intelligent-development"){if(!e.sessionId||!e.status)throw new Error(V("sandbox.invalidSession"));return{resourceType:"session",id:e.sessionId,toolName:t,userSessionId:e.userSessionId??"",displayName:e.displayName??"",status:e.status,createdAt:e.createdAt??"",expireAt:e.expireAt??"",persistent:e.persistent!==!1,toolType:e.toolType??"",intelligentDevelopment:n,createdBy:e.createdBy??"",region:e.region??"",isMine:e.isMine===!0,threadId:e.threadId??"",cwd:e.cwd??"",workspaceLocked:e.workspaceLocked===!0,busy:e.busy===!0,...typeof e.model=="string"?{model:e.model}:{},permissions:ZI(e.permissions),...e.conversation===void 0?{}:{restoredConversation:xb(e.conversation)}}}function mY(e,t="codex"){if(!e.snapshotId||!e.status)throw new Error(V("sandbox.invalidSnapshot"));return{resourceType:"snapshot",id:e.snapshotId,snapshotId:e.snapshotId,sourceSessionId:e.sessionId??"",toolName:t,userSessionId:e.userSessionId??"",displayName:e.displayName??"",status:e.status,snapshotStatus:e.snapshotStatus??"Unknown",reason:e.reason??"",createdAt:e.createdAt??"",createdBy:e.createdBy??"",region:e.region??"",isMine:e.isMine===!0}}function gY(e,t){if((t==null?void 0:t.autoResumeSnapshots)===void 0)return e;const n=new URLSearchParams({autoResumeSnapshots:String(t.autoResumeSnapshots)});return`${e}?${n.toString()}`}const sO={approvalPolicy:"on-request",approvalsReviewer:"user",sandboxMode:"workspace-write",networkAccess:!1};function ZI(e){if(!e||typeof e!="object")return{...sO};const t=e,n=t.approvalPolicy,i=t.approvalsReviewer,r=t.sandboxMode;return{approvalPolicy:n==="untrusted"||n==="on-request"||n==="never"?n:sO.approvalPolicy,approvalsReviewer:i==="user"||i==="auto_review"?i:sO.approvalsReviewer,sandboxMode:r==="read-only"||r==="workspace-write"||r==="danger-full-access"?r:sO.sandboxMode,networkAccess:typeof t.networkAccess=="boolean"?t.networkAccess:sO.networkAccess}}function bY(e){if(!e||typeof e!="object")throw new Error(V("sandbox.invalidSettings"));const t=e;return{threadId:typeof t.threadId=="string"?t.threadId:"",cwd:typeof t.cwd=="string"?t.cwd:"",...typeof t.model=="string"?{model:t.model}:{},workspaceLocked:t.workspaceLocked===!0,busy:t.busy===!0,permissions:ZI(t.permissions)}}function uo(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function aJe(e){const t=uo(e);if(!(!t||typeof t.id!="string"||!t.id))return{id:t.id,displayName:typeof t.displayName=="string"?t.displayName:t.id,description:typeof t.description=="string"?t.description:"",isDefault:t.isDefault===!0}}function lJe(e){const t=uo(e);if(!(!t||typeof t.id!="string"||!t.id||typeof t.name!="string"||!t.name))return{id:t.id,name:t.name,description:typeof t.description=="string"?t.description:""}}function uTe(e){const t=uo(e);if(!(!t||typeof t.id!="string"||!t.id))return{id:t.id,...typeof t.name=="string"&&t.name?{name:t.name}:{},preview:typeof t.preview=="string"?t.preview:"",cwd:typeof t.cwd=="string"?t.cwd:"",modelProvider:typeof t.modelProvider=="string"?t.modelProvider:"",createdAt:typeof t.createdAt=="number"&&Number.isFinite(t.createdAt)?t.createdAt:0,updatedAt:typeof t.updatedAt=="number"&&Number.isFinite(t.updatedAt)?t.updatedAt:0,status:typeof t.status=="string"?t.status:"unknown"}}function xb(e){const t=uo(e),n=uTe(t==null?void 0:t.thread);if(!t||!n||typeof t.threadId!="string"||!Array.isArray(t.messages))throw new Error(V("sandbox.invalidThreadSnapshot"));const i=t.messages.flatMap(r=>{const s=uo(r);if(!s||typeof s.id!="string"||s.role!=="user"&&s.role!=="assistant"||typeof s.content!="string"||typeof s.timestamp!="number")return[];const a=Array.isArray(s.skillNames)?s.skillNames.filter(c=>typeof c=="string"&&!!c):[],l=Array.isArray(s.images)?s.images.flatMap(c=>{const u=uo(c);return!u||typeof u.mimeType!="string"||!u.mimeType.startsWith("image/")||typeof u.data!="string"||!u.data?[]:[{mimeType:u.mimeType,data:u.data,...typeof u.name=="string"&&u.name?{name:u.name}:{},...typeof u.alt=="string"&&u.alt?{alt:u.alt}:{}}]}):[];return[{id:s.id,role:s.role,content:s.content,timestamp:s.timestamp,...a.length?{skillNames:a}:{},...l.length?{images:l}:{}}]});return{thread:n,threadId:t.threadId,messages:i,...typeof t.model=="string"?{model:t.model}:{},...typeof t.cwd=="string"?{cwd:t.cwd}:{},workspaceLocked:t.workspaceLocked===!0,permissions:ZI(t.permissions)}}function iF(e){if(!e||typeof e!="object")return;const t=e;if(![t.totalTokens,t.inputTokens,t.cachedInputTokens,t.outputTokens,t.reasoningOutputTokens].some(i=>typeof i!="number"||!Number.isFinite(i)||i<0))return{totalTokens:Math.trunc(t.totalTokens),inputTokens:Math.trunc(t.inputTokens),cachedInputTokens:Math.trunc(t.cachedInputTokens),outputTokens:Math.trunc(t.outputTokens),reasoningOutputTokens:Math.trunc(t.reasoningOutputTokens)}}function cJe(e){const t=iF(e.usage);if(!t||typeof e.turnId!="string")return;const n=iF(e.threadTotal),i=e.modelContextWindow;return{turnId:e.turnId,usage:t,...n?{threadTotal:n}:{},...typeof i=="number"&&Number.isFinite(i)&&i>=0?{modelContextWindow:Math.trunc(i)}:{}}}function uJe(e){return typeof e.id!="string"||e.kind!=="command"&&e.kind!=="file"||typeof e.method!="string"?null:{id:e.id,kind:e.kind,method:e.method,...typeof e.reason=="string"?{reason:e.reason}:{},...typeof e.command=="string"?{command:e.command}:{},...typeof e.cwd=="string"?{cwd:e.cwd}:{},...typeof e.grantRoot=="string"?{grantRoot:e.grantRoot}:{},...e.changes!==void 0?{changes:e.changes}:{},...typeof e.threadId=="string"?{threadId:e.threadId}:{},...typeof e.turnId=="string"?{turnId:e.turnId}:{},...typeof e.itemId=="string"?{itemId:e.itemId}:{}}}function dTe(e={}){let t="";const n=[],i=new Map,r=new Map;let s,a;function l(){var h;const f=s?[...n,s]:n;(h=e.onBlocks)==null||h.call(e,[...f])}function c(f){t+=f;const h=n[n.length-1],m=n.length-1,g=[...i.values()].includes(m);(h==null?void 0:h.kind)==="text"&&!g?n[m]={...h,text:h.text+f}:n.push({kind:"text",text:f}),l()}function u(f){if(typeof f.id!="string"||f.kind!=="thinking"&&f.kind!=="commentary"&&f.kind!=="tool"||f.status!=="running"&&f.status!=="done"&&f.status!=="error")return;const h=f.status!=="running";let m;if(f.kind==="thinking")m={kind:"thinking",text:typeof f.text=="string"?f.text:"",done:h};else if(f.kind==="commentary"){if(typeof f.text!="string"||!f.text)return;m={kind:"text",text:f.text}}else{if(typeof f.name!="string"||!f.name)return;m={kind:"tool",name:f.name,args:f.args,response:f.response,status:f.status==="error"?"failed":h?"completed":"running",done:h}}m={...m,id:f.id,...typeof f.itemType=="string"?{itemType:f.itemType}:{},...typeof f.phase=="string"?{phase:f.phase}:{},...typeof f.durationMs=="number"?{durationMs:f.durationMs}:{}};const g=i.get(f.id);g===void 0?(i.set(f.id,n.length),n.push(m)):n[g]=m,l()}function d(f){var b,v,y,w;let h="message";const m=[];for(const x of f.split(/\r?\n/))x.startsWith("event:")&&(h=x.slice(6).trim()),x.startsWith("data:")&&m.push(x.slice(5).trimStart());if(m.length===0)return;let g;try{g=JSON.parse(m.join(`
+`))}catch{throw new Error(V("sandbox.invalidConversationResponse"))}if(h==="error"){const x=typeof g.message=="string"&&g.message?g.message:V("sandbox.conversationFailed");throw new BU(x,{code:typeof g.code=="string"?g.code:"",retryable:g.retryable===!0,publicMessage:x})}if(h==="progress"&&typeof g.text=="string"&&(s=g.text?{kind:"progress",text:g.text}:void 0,l()),["activity","delta","tool_output","tool_progress","plan","diff"].includes(h)&&(s=void 0),h==="activity"&&u(g),(h==="tool_output"||h==="tool_progress")&&typeof g.id=="string"){const x=i.get(g.id),O=x===void 0?void 0:n[x];if((O==null?void 0:O.kind)==="tool"&&x!==void 0&&typeof g.text=="string"){const S=uo(O.response)||{};n[x]=h==="tool_progress"?{...O,progressText:g.text}:{...O,response:{...S,output:(g.snapshot?"":String(S.output||""))+g.text}},l()}}if((h==="plan"||h==="diff")&&typeof g.id=="string"){const x=typeof g.text=="string"?g.text:"",O=Array.isArray(g.items)?g.items:Array.isArray(g.plan)?g.plan:[],S=h==="diff"?{kind:"diff",id:g.id,text:x,done:g.status==="done"}:{kind:"plan",id:g.id,title:V("developmentRuns.plan"),summary:x,done:g.status==="done",items:O.flatMap(C=>{const E=uo(C);if(!E||typeof(E.text??E.step)!="string")return[];const R=E.status==="inProgress"?"in_progress":E.status;return[{text:String(E.text??E.step),status:R==="completed"||R==="failed"||R==="in_progress"?R:"pending"}]})},k=i.get(g.id);k===void 0?(i.set(g.id,n.length),n.push(S)):n[k]=S,l()}if(h==="development.source_ready"||h==="development.succeeded"){const x=uo(g.payload),O=uo(x==null?void 0:x.delivery),S=h==="development.succeeded";if(O&&typeof O.sessionId=="string"&&typeof O.artifactSha256=="string"&&typeof O.validationReportSha256=="string"&&typeof O.agentName=="string"&&typeof O.entryPoint=="string"&&typeof O.fileCount=="number"&&typeof O.artifactSize=="number"&&typeof O.validatedAt=="string"&&O.deployable===!0&&O.verified===S&&typeof O.validationSummary=="string"&&Array.isArray(O.gateSummary)&&O.gateSummary.every(k=>typeof k=="string")){const k={kind:"delivery",value:{sessionId:O.sessionId,...typeof O.projectId=="string"&&typeof O.versionId=="string"?{projectId:O.projectId,versionId:O.versionId,...O.parentVersionId===null||typeof O.parentVersionId=="string"?{parentVersionId:O.parentVersionId}:{}}:{},artifactSha256:O.artifactSha256,validationReportSha256:O.validationReportSha256,agentName:O.agentName,entryPoint:O.entryPoint,fileCount:O.fileCount,artifactSize:O.artifactSize,validatedAt:O.validatedAt,gateSummary:O.gateSummary,deployable:O.deployable,verified:O.verified,validationSummary:O.validationSummary}},C=n.findIndex(E=>E.kind==="delivery"&&E.value.sessionId===O.sessionId&&E.value.artifactSha256===O.artifactSha256&&E.value.validationReportSha256===O.validationReportSha256);C===-1?n.push(k):n[C]=k,l()}}if(h==="approval"){const x=uJe(g);x&&((b=e.onApproval)==null||b.call(e,x))}if(h==="usage"){const x=cJe(g);x&&(a=x,(v=e.onUsage)==null||v.call(e,x))}if(h==="approval_resolved"&&typeof g.approvalId=="string"&&((y=e.onApprovalResolved)==null||y.call(e,g.approvalId)),h==="delta"&&typeof g.text=="string")if(typeof g.id=="string"&&g.id){const x=r.get(g.id),O=x===void 0?void 0:n[x],S=((w=uo(g))==null?void 0:w.snapshot)===!0;(O==null?void 0:O.kind)==="text"?n[x]={...O,phase:typeof g.phase=="string"&&g.phase?g.phase:O.phase,text:S?O.text.startsWith(g.text)?O.text:g.text:O.text+g.text}:(r.set(g.id,n.length),n.push({kind:"text",text:g.text,id:g.id,itemType:typeof g.itemType=="string"?g.itemType:void 0,phase:typeof g.phase=="string"?g.phase:void 0})),t=n.filter(k=>k.kind==="text").map(k=>k.text).join(""),l()}else c(g.text);if(h==="done"&&!t&&typeof g.text=="string"&&c(g.text),h==="done"){for(let x=0;x({text:t,blocks:n.map(f=>({...f})),...a?{usage:a}:{}})}}async function dJe(e,t={}){if(!e.body)throw new Error(V("sandbox.emptyConversationResponse"));const n=e.body.getReader(),i=new TextDecoder;let r="";const s=dTe(t);for(;;){const{done:l,value:c}=await n.read();r+=i.decode(c,{stream:!l});const u=r.split(/\r?\n\r?\n/);if(r=u.pop()??"",u.forEach(s.consumeFrame),l)break}r.trim()&&s.consumeFrame(r),s.consumeFrame(`event: done
+data: {}`);const a=s.result();if(a.blocks.length===0)throw new Error(V("sandbox.emptyReply"));return a}async function jc(e,t,n,{method:i="GET",body:r,options:s={},fallback:a}){if(!t)throw new Error(V("sandbox.missingSession"));const l=await pn(`${e}/${encodeURIComponent(t)}/${n}`,{method:i,headers:Yr(r===void 0?void 0:{"Content-Type":"application/json"}),...r===void 0?{}:{body:JSON.stringify(r)},signal:s.signal},Oh);if(!l.ok)throw await Es(l,a);return l.json()}function fTe(e,t={}){return{async listSessions(n={}){const i=await pn(gY(e,n),{method:"GET",headers:Yr(),signal:n.signal},fY);if(!i.ok)throw await Es(i,V("sandbox.listCodexFailed"));const r=await i.json();if(!Array.isArray(r.sessions))throw new Error(V("sandbox.invalidSessionList"));if(r.snapshots!==void 0&&!Array.isArray(r.snapshots))throw new Error(V("sandbox.invalidSnapshotList"));return[...r.sessions.map(s=>eb(s,"codex",t.intelligentDevelopment)),...(r.snapshots??[]).map(s=>mY(s))]},async startSession(n={}){var s,a;const i=((s=n.displayName)==null?void 0:s.trim())??"",r=await pn(e,{method:"POST",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({displayName:t.textOnly&&n.projectId?Array.from(i).slice(0,nF).join(""):i,...(a=n.modelId)!=null&&a.trim()?{modelId:n.modelId.trim()}:{},...t.textOnly&&n.projectId?{projectId:n.projectId,...n.baseVersionId?{baseVersionId:n.baseVersionId}:{}}:{},...t.textOnly?{}:{persistent:n.persistent??!0},...n.diskGb!==void 0?{diskGb:n.diskGb}:{}}),signal:n.signal},Q5);if(!r.ok)throw await Es(r,V("sandbox.startFailed"));return eb(await r.json(),"codex",t.intelligentDevelopment)},async listAgentSessions(n,i={}){const r=await pn(gY(`/web/${n}/sessions`,i),{method:"GET",headers:Yr(),signal:i.signal},fY);if(!r.ok)throw await Es(r,V("sandbox.listAgentFailed",{kind:n}));const s=await r.json();if(!Array.isArray(s.sessions))throw new Error(V("sandbox.invalidKindSessionList",{kind:n}));if(s.snapshots!==void 0&&!Array.isArray(s.snapshots))throw new Error(V("sandbox.invalidKindSnapshotList",{kind:n}));return[...s.sessions.map(a=>eb(a,n)),...(s.snapshots??[]).map(a=>mY(a,n))]},async startAgentSession(n,i={}){var s;const r=await pn(`/web/${n}/sessions`,{method:"POST",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({displayName:((s=i.displayName)==null?void 0:s.trim())??"",persistent:i.persistent??!0,...i.diskGb!==void 0?{diskGb:i.diskGb}:{}}),signal:i.signal},Q5);if(!r.ok)throw await Es(r,V("sandbox.createAgentFailed",{kind:n}));return eb(await r.json(),n)},async openAgentSession(n,i,r={}){if(!i)throw new Error(V("sandbox.missingSessionToOpen"));const s=await pn(`/web/${n}/sessions/${encodeURIComponent(i)}/open`,{method:"POST",headers:Yr(),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.openAgentFailed",{kind:n}));const a=await s.json();if(typeof a.webuiUrl!="string"||!a.webuiUrl.startsWith("/"))throw new Error(V("sandbox.invalidAgentHomeUrl",{kind:n}));return{session:eb(a,n),kind:n,webuiUrl:ta(a.webuiUrl)}},async launchAgentTerminal(n,i,r={}){if(!i)throw new Error(V("sandbox.missingSessionForTerminal"));const s=await pn(`/web/${n}/sessions/${encodeURIComponent(i)}/terminal`,{method:"POST",headers:Yr(),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.openTerminalFailed",{kind:n}));const a=await s.json();return{url:hTe(a.url,`${n} Terminal`),...typeof a.shellSessionId=="string"?{shellSessionId:a.shellSessionId}:{}}},async deleteAgentSession(n,i,r={}){if(!i)return;const s=await pn(`/web/${n}/sessions/${encodeURIComponent(i)}`,{method:"DELETE",headers:Yr(),signal:r.signal},rO);if(!s.ok&&s.status!==404)throw await Es(s,V("sandbox.deleteAgentFailed",{kind:n}))},async resumeSnapshot(n,i,r={}){if(!i)throw new Error(V("sandbox.missingSnapshot"));const s=n==="codex"?"/web/sandbox":`/web/${n}`,a=await pn(`${s}/snapshots/${encodeURIComponent(i)}/resume`,{method:"POST",headers:Yr(),signal:r.signal},Q5);if(!a.ok)throw await Es(a,V("sandbox.resumeSnapshotFailed"));return eb(await a.json(),n)},async deleteSnapshot(n,i,r={}){if(!i)return;const s=n==="codex"?"/web/sandbox":`/web/${n}`,a=await pn(`${s}/snapshots/${encodeURIComponent(i)}`,{method:"DELETE",headers:Yr(),signal:r.signal},rO);if(!a.ok&&a.status!==404)throw await Es(a,V("sandbox.deleteSnapshotFailed"))},async connectSession(n,i={}){if(!n)throw new Error(V("sandbox.missingSessionToConnect"));const r=await pn(`${e}/${encodeURIComponent(n)}/connect`,{method:"POST",headers:Yr({"Content-Type":"application/json"}),signal:i.signal},nJe);if(!r.ok)throw await Es(r,V("sandbox.connectCodexFailed"));const s=eb(await r.json(),"codex",t.intelligentDevelopment);if(s.status.toLowerCase()!=="ready")throw new Error(V("sandbox.sessionNotReady",{status:s.status}));return s},async sendMessage(n,i={}){var s;if(!n.sessionId||!n.text.trim())throw new Error(V("sandbox.invalidMessage"));const r=await pn(`${e}/${encodeURIComponent(n.sessionId)}/messages`,{method:"POST",headers:Yr({Accept:"text/event-stream","Content-Type":"application/json"}),body:JSON.stringify({message:n.text,...!t.textOnly&&((s=n.skillIds)!=null&&s.length)?{skillIds:n.skillIds}:{}}),signal:i.signal},t.messageTimeoutMs??iJe);if(!r.ok)throw await Es(r,V("sandbox.conversationFailed"));return dJe(r,i)},async interruptSession(n,i={}){if(!n)return;const r=await pn(`${e}/${encodeURIComponent(n)}/interrupt`,{method:"POST",headers:Yr(),signal:i.signal},t.interruptTimeoutMs??rO);if(!r.ok&&![404,409].includes(r.status))throw await Es(r,V("sandbox.interruptFailed"))},async getStatus(n,i={}){const r=await jc(e,n,"status",{options:i,fallback:V("sandbox.getStatusFailed")}),s=bY(r),a=uo(r),l=iF(a==null?void 0:a.threadTotal),c=a==null?void 0:a.modelContextWindow;return{...s,...l?{threadTotal:l}:{},...typeof c=="number"&&Number.isFinite(c)&&c>=0?{modelContextWindow:Math.trunc(c)}:{}}},async getEndpoint(n,i={}){const r=uo(await jc(e,n,"endpoint",{options:i,fallback:V("sandbox.getEndpointFailed")}));if(typeof(r==null?void 0:r.endpoint)!="string"||!r.endpoint.trim())throw new Error(V("sandbox.invalidEndpoint"));return{endpoint:r.endpoint,sessionId:typeof r.sessionId=="string"?r.sessionId:n,...typeof r.expireAt=="string"?{expireAt:r.expireAt}:{}}},async createCodexProjectHandoffPairing(n={}){const i=await pn(`${dY}/pairings`,{method:"POST",headers:Yr({Accept:"application/json","Content-Type":"application/json"}),body:JSON.stringify({ttlSeconds:sJe}),signal:n.signal},hY);if(!i.ok)throw await Es(i,V("sandbox.createHandoffPairingFailed"));const r=uo(await pY(i,V("sandbox.createHandoffPairingFailed")));if(typeof(r==null?void 0:r.pairingCode)!="string"||!r.pairingCode.trim()||typeof r.expireAt!="string"||!r.expireAt.trim())throw new Error(V("sandbox.invalidHandoffPairing"));const s=typeof r.studioUrl=="string"&&r.studioUrl.trim()?r.studioUrl.trim():window.location.origin;return{pairingCode:r.pairingCode,expireAt:r.expireAt,studioUrl:s}},async getCodexProjectHandoffStatus(n,i={}){const r=await pn(`${dY}/pairings/${encodeURIComponent(n)}`,{headers:Yr({Accept:"application/json"}),signal:i.signal},hY);if(!r.ok)throw await Es(r,V("sandbox.getHandoffStatusFailed"));const s=uo(await pY(r,V("sandbox.getHandoffStatusFailed"))),a=new Set(["issued","creating","session-created","continuing","running","completed","failed"]);if(typeof(s==null?void 0:s.state)!="string"||!a.has(s.state)||typeof s.expireAt!="string"||!s.expireAt.trim())throw new Error(V("sandbox.invalidHandoffStatus"));return{state:s.state,expireAt:s.expireAt,...typeof s.projectName=="string"?{projectName:s.projectName}:{},...typeof s.agentName=="string"?{agentName:s.agentName}:{},...typeof s.sessionId=="string"?{sessionId:s.sessionId}:{},...typeof s.error=="string"?{error:s.error}:{},...s.failedStage==="creating-session"||s.failedStage==="uploading-project"||s.failedStage==="restoring-project"||s.failedStage==="continuing-task"?{failedStage:s.failedStage}:{}}},async listModels(n,i={}){const r=uo(await jc(e,n,"models",{options:i,fallback:V("sandbox.listModelsFailed")}));if(!Array.isArray(r==null?void 0:r.models))throw new Error(V("sandbox.invalidModelList"));return r.models.flatMap(s=>{const a=aJe(s);return a?[a]:[]})},async setModel(n,i,r={}){const s=uo(await jc(e,n,"model",{method:"PUT",body:{model:i},options:r,fallback:V("sandbox.setModelFailed")}));if(typeof(s==null?void 0:s.model)!="string"||!s.model)throw new Error(V("sandbox.invalidModel"));return s.model},async listSkills(n,i=!1,r={}){const a=uo(await jc(e,n,`skills${i?"?force_reload=true":""}`,{options:r,fallback:V("sandbox.listSkillsFailed")}));if(!Array.isArray(a==null?void 0:a.skills))throw new Error(V("sandbox.invalidSkillList"));return a.skills.flatMap(l=>{const c=lJe(l);return c?[c]:[]})},async listThreads(n,i={},r={}){const s=new URLSearchParams;i.cursor&&s.set("cursor",i.cursor),i.search&&s.set("search",i.search),i.archived&&s.set("archived","true");const a=s.size?`?${s}`:"",l=uo(await jc(e,n,`threads${a}`,{options:r,fallback:V("sandbox.listThreadsFailed")}));if(!Array.isArray(l==null?void 0:l.threads))throw new Error(V("sandbox.invalidThreadList"));return{threads:l.threads.flatMap(c=>{const u=uTe(c);return u?[u]:[]}),...typeof l.nextCursor=="string"?{nextCursor:l.nextCursor}:{}}},async newThread(n,i={}){return xb(await jc(e,n,"threads/new",{method:"POST",options:i,fallback:V("sandbox.createThreadFailed")}))},async readThread(n,i,r={}){if(!i)throw new Error(V("sandbox.missingThread"));return xb(await jc(e,n,`threads/${encodeURIComponent(i)}`,{options:r,fallback:V("sandbox.readThreadFailed")}))},async resumeThread(n,i,r={}){return xb(await jc(e,n,"threads/resume",{method:"POST",body:{threadId:i},options:r,fallback:V("sandbox.resumeThreadFailed")}))},async forkThread(n,i={}){return xb(await jc(e,n,"threads/fork",{method:"POST",options:i,fallback:V("sandbox.forkThreadFailed")}))},async archiveThread(n,i,r={}){const s=uo(await jc(e,n,"threads/archive",{method:"POST",body:{threadId:i},options:r,fallback:V("sandbox.archiveThreadFailed")}));if((s==null?void 0:s.archived)!==!0)throw new Error(V("sandbox.invalidArchiveResult"));return{archived:!0,...s.thread?{snapshot:xb(s)}:{}}},async deleteThread(n,i,r={}){const s=uo(await jc(e,n,"threads/delete",{method:"POST",body:{threadId:i},options:r,fallback:V("sandbox.deleteThreadFailed")}));if((s==null?void 0:s.deleted)!==!0)throw new Error(V("sandbox.invalidDeleteResult"));return{deleted:!0,...s.thread?{snapshot:xb(s)}:{}}},async compactThread(n,i={}){await jc(e,n,"threads/compact",{method:"POST",options:i,fallback:V("sandbox.compactThreadFailed")})},async getSettings(n,i={}){const r=await pn(`${e}/${encodeURIComponent(n)}/settings`,{method:"GET",headers:Yr(),signal:i.signal},Oh);if(!r.ok)throw await Es(r,V("sandbox.getSettingsFailed"));return bY(await r.json())},async updatePermissions(n,i,r={}){const s=await pn(`${e}/${encodeURIComponent(n)}/permissions`,{method:"PUT",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify(i),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.updatePermissionsFailed"));const a=await s.json();return ZI(a.permissions)},async updateWorkspace(n,i,r={}){const s=await pn(`${e}/${encodeURIComponent(n)}/workspace`,{method:"PUT",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({cwd:i}),signal:r.signal},Oh);if(!s.ok)throw await Es(s,V("sandbox.updateWorkspaceFailed"));const a=await s.json();if(typeof a.cwd!="string"||!a.cwd)throw new Error(V("sandbox.invalidWorkingDirectory"));return a.cwd},async listDirectories(n,i,r={}){const s=new URLSearchParams({path:i}),a=await pn(`${e}/${encodeURIComponent(n)}/directories?${s}`,{method:"GET",headers:Yr(),signal:r.signal},Oh);if(!a.ok)throw await Es(a,V("sandbox.listDirectoriesFailed"));const l=await a.json();if(typeof l.path!="string"||!Array.isArray(l.directories)||l.directories.some(c=>!c||typeof c.name!="string"||typeof c.path!="string"))throw new Error(V("sandbox.invalidDirectoryList"));return{path:l.path,...typeof l.parent=="string"?{parent:l.parent}:{},directories:l.directories}},async resolveApproval(n,i,r,s={}){const a=await pn(`${e}/${encodeURIComponent(n)}/approvals/${encodeURIComponent(i)}`,{method:"POST",headers:Yr({"Content-Type":"application/json"}),body:JSON.stringify({decision:r}),signal:s.signal},Oh);if(!a.ok)throw await Es(a,V("sandbox.resolveApprovalFailed"))},async launchTerminal(n,i={}){return yY(e,n,"terminal",i)},async launchBrowser(n,i={}){return yY(e,n,"browser",i)},async uploadFile(n,i,r={}){const s=new FormData;s.set("file",i,i.name);const a=await pn(`${e}/${encodeURIComponent(n)}/files`,{method:"POST",headers:Yr(),body:s,signal:r.signal},rJe);if(!a.ok)throw await Es(a,V("sandbox.uploadFileFailed"));const l=await a.json();if(typeof l.id!="string"||typeof l.path!="string"||typeof l.name!="string"||typeof l.mimeType!="string"||typeof l.sizeBytes!="number")throw new Error(V("sandbox.invalidUploadResult"));return l},async closeSession(n,i={}){if(!n)return;const r=await pn(`${e}/${encodeURIComponent(n)}/disconnect`,{method:"POST",headers:Yr(),signal:i.signal},rO);if(!r.ok&&r.status!==404)throw await Es(r,V("sandbox.disconnectCodexFailed"))},async deleteSession(n,i={}){if(!n)return;const r=await pn(`${e}/${encodeURIComponent(n)}`,{method:"DELETE",headers:Yr(),signal:i.signal},rO);if(!r.ok&&r.status!==404)throw await Es(r,V("sandbox.deleteCodexFailed"))}}}const kr=fTe(tJe),M0=fTe("/web/intelligent-development/sessions",{textOnly:!0,messageTimeoutMs:36e5,interruptTimeoutMs:45e3,intelligentDevelopment:!0});async function yY(e,t,n,i){const r=await pn(`${e}/${encodeURIComponent(t)}/${n}`,{method:"POST",headers:Yr(),signal:i.signal},Oh);if(!r.ok)throw await Es(r,V(n==="terminal"?"sandbox.openSandboxTerminalFailed":"sandbox.openSandboxBrowserFailed"));const s=await r.json();return{url:hTe(s.url,V("sandbox.toolLabel")),...typeof s.shellSessionId=="string"?{shellSessionId:s.shellSessionId}:{}}}function hTe(e,t){if(typeof e!="string")throw new Error(V("sandbox.invalidToolUrl",{label:t}));if(e.startsWith("/"))return ta(e);let n;try{n=new URL(e)}catch{throw new Error(V("sandbox.invalidToolUrl",{label:t}))}const i=n.protocol==="http:"&&window.location.protocol==="http:";if(n.protocol!=="https:"&&!i)throw new Error(V("sandbox.unsafeToolUrl",{label:t}));return n.toString()}const zc=e=>["succeeded","cancelled","failed"].includes(e.state),pTe="/web/intelligent-development";class Xx extends Error{constructor(t,n){super(t),this.status=n}}async function tb(e,t="GET",n,i){const r=await pn(`${pTe}${e}`,{method:t,signal:i,headers:Yr(n===void 0?void 0:{"Content-Type":"application/json"}),...n===void 0?{}:{body:JSON.stringify(n)}},3e4);if(!r.ok){const s=await r.json().catch(()=>null),a=s==null?void 0:s.detail;throw new Xx(typeof a=="string"?a:(a==null?void 0:a.message)||V("developmentRuns.requestFailed"),r.status)}return r.json()}function L0(e){const t=e;if(!t||typeof t.runId!="string"||typeof t.sessionId!="string"||!["queued","running","recovering","waiting_user","stopping","succeeded","cancelled","failed"].includes(t.state))throw new Error(V("developmentRuns.invalidResponse"));return t}const bd={async active(e){const t=await tb("/runs","GET",void 0,e);if(!Array.isArray(t.runs))throw new Error(V("developmentRuns.invalidResponse"));return t.runs.map(L0)},async get(e,t){return L0(await tb(`/runs/${encodeURIComponent(e)}`,"GET",void 0,t))},async list(e,t){const n=await tb(`/sessions/${encodeURIComponent(e)}/runs`,"GET",void 0,t);if(!Array.isArray(n.runs))throw new Error(V("developmentRuns.invalidResponse"));return n.runs.map(L0)},async create(e,t,n){return L0(await tb(`/sessions/${encodeURIComponent(e)}/runs`,"POST",{message:t,requestId:n}))},async steer(e,t,n){await tb(`/runs/${encodeURIComponent(e)}/inputs`,"POST",{message:t,clientId:n})},async stop(e){return L0(await tb(`/runs/${encodeURIComponent(e)}/stop`,"POST"))},async resume(e){return L0(await tb(`/runs/${encodeURIComponent(e)}/resume`,"POST"))}};class fJe{constructor(t){Jt(this,"cursor",0);Jt(this,"turns",[]);Jt(this,"activeInput");Jt(this,"itemTurns",new Map);Jt(this,"nativeInputs",new Map);Jt(this,"metrics",new Map);Jt(this,"inputOrder",[]);Jt(this,"projections",new Map);Jt(this,"itemInputs",new Map);this.run=t,this.activeInput=t.requestId}projection(t){let n=this.projections.get(t);if(!n){const i={role:"assistant",blocks:[],meta:{localId:`${t}:assistant`}},r=this.turns.findIndex(s=>{var a;return((a=s.meta)==null?void 0:a.localId)===`${t}:user`});this.turns.splice(r<0?this.turns.length:r+1,0,i),n=dTe({onBlocks:s=>{i.blocks=s.map(a=>({...a,turnId:this.itemTurns.get(a.id||"")}))},onUsage:s=>{i.meta={...i.meta,sandboxUsage:s.usage}}}),this.projections.set(t,n)}return n}apply(t){if(t.payload.runId!==this.run.runId)throw new Error(V("developmentRuns.invalidResponse"));if(t.seq<=this.cursor)return;if(t.seq!==this.cursor+1)throw new Error(V("developmentRuns.eventGap"));for(const i of this.turns)i.blocks.some(r=>r.kind==="turn-summary")&&(i.blocks=i.blocks.filter(r=>r.kind!=="turn-summary"));const n=t.payload;if(t.type==="run.input"&&typeof n.clientId=="string"&&typeof n.message=="string")this.turns.push({role:"user",blocks:[{kind:"text",text:n.message}],meta:{localId:`${n.clientId}:user`},activity:{id:`${n.clientId}:delivery`,title:V(`developmentRuns.input.${String(n.status)}`)}}),this.inputOrder.push(n.clientId),this.projection(n.clientId),n.status==="delivered"&&this.inputOrder.indexOf(n.clientId)>=this.inputOrder.indexOf(this.activeInput)&&(this.activeInput=n.clientId);else if(t.type==="run.input_status"&&typeof n.clientId=="string"){const i=this.turns.find(r=>{var s;return((s=r.meta)==null?void 0:s.localId)===`${n.clientId}:user`});i&&(i.activity={id:`${n.clientId}:delivery`,title:V(`developmentRuns.input.${String(n.status)}`)}),n.status==="delivered"&&this.inputOrder.indexOf(n.clientId)>=this.inputOrder.indexOf(this.activeInput)&&(this.activeInput=n.clientId)}else if(t.type==="run.turn"&&typeof n.turnId=="string"){const r={...this.metrics.get(n.turnId),turnId:n.turnId,status:String(n.status||"inProgress"),toolCalls:0,toolDurationComplete:!1};for(const s of["startedAt","completedAt","durationMs"])typeof n[s]=="number"&&Number.isFinite(n[s])&&n[s]>=0&&(r[s]=n[s]);if(typeof n.model=="string"&&(r.model=n.model),n.usage&&typeof n.usage=="object"&&!Array.isArray(n.usage)){const s={};for(const a of["totalTokens","inputTokens","outputTokens","cachedInputTokens","cacheWriteInputTokens","reasoningOutputTokens"]){const l=n.usage[a];typeof l=="number"&&Number.isSafeInteger(l)&&l>=0&&(s[a]=l)}r.usage=s}n.usageIncomplete===!0&&(r.usageIncomplete=!0),this.metrics.set(n.turnId,r),this.nativeInputs.set(n.turnId,this.activeInput),this.projection(this.activeInput)}else if(t.type==="run.status"){if(this.run={...this.run,...n},zc(this.run))for(const[i,r]of this.metrics)r.status==="inProgress"&&this.metrics.set(i,{...r,status:"unavailable",usageIncomplete:!0});if(zc(this.run)||this.run.state==="waiting_user")for(const i of this.projections.values())i.consumeFrame(`event: done
data: {}`)}else if(!t.type.startsWith("run.")){const i=typeof n.id=="string"&&n.id?n.id:["plan","diff"].includes(t.type)?t.type:"",r=i?`${String(n.turnId||"")}:${i}`:"",s=r&&this.itemInputs.get(r)||this.activeInput;r&&(this.itemInputs.set(r,s),typeof n.turnId=="string"&&this.itemTurns.set(r,n.turnId)),typeof n.turnId=="string"&&this.nativeInputs.set(n.turnId,this.activeInput);const a=t.type==="activity"&&n.kind==="commentary";this.projection(s).consumeFrame(`event: ${a?"delta":t.type}
-data: ${JSON.stringify({...n,...r?{id:r}:{},...a?{snapshot:!0}:{}})}`)}(t.type==="run.input"||t.type==="run.input_status")&&n.status==="delivered"&&typeof n.turnId=="string"&&typeof n.clientId=="string"&&this.nativeInputs.set(n.turnId,n.clientId),this.decorate(),this.cursor=t.seq}decorate(){const t=!zc(this.run)&&this.run.state!=="waiting_user",n=[...this.turns].reverse().find(i=>i.role==="assistant");for(const i of this.turns)i.role==="assistant"&&(i.meta={...i.meta,streaming:t&&i===n});for(const i of this.metrics.values()){if(!["completed","failed","interrupted","cancelled","unavailable"].includes(i.status))continue;const r=new Map;for(const u of this.turns)for(const d of u.blocks)d.kind==="tool"&&d.turnId===i.turnId&&d.id&&r.set(d.id,d);const s=[...r.values()].filter(u=>typeof u.durationMs=="number"&&Number.isFinite(u.durationMs)&&u.durationMs>=0),a={...i,toolCalls:r.size,toolDurationComplete:s.length===r.size,toolDurationMs:s.length||!r.size?s.reduce((u,d)=>u+d.durationMs,0):void 0},l=this.nativeInputs.get(i.turnId),c=this.turns.find(u=>{var d;return((d=u.meta)==null?void 0:d.localId)===`${l}:assistant`});if(c){const u=c.blocks.reduce((d,f,h)=>f.turnId===i.turnId?h:d,-1);c.blocks.splice(u<0?c.blocks.length:u+1,0,{kind:"turn-summary",id:`${i.turnId}:summary`,turnId:i.turnId,value:a})}}}}function pJe(e,t){return new Promise((n,i)=>{if(t.aborted){i(new DOMException("Aborted","AbortError"));return}const r=()=>{clearTimeout(s),i(new DOMException("Aborted","AbortError"))},s=setTimeout(()=>{t.removeEventListener("abort",r),n()},e);t.addEventListener("abort",r,{once:!0})})}async function mJe(e,t,n){var c;const i=await pn(`${mTe}/runs/${encodeURIComponent(e.run.runId)}/events?after=${e.cursor}`,{signal:t,headers:Yr({Accept:"text/event-stream"})},0);if(!i.ok)throw new Xx(V("developmentRuns.requestFailed"),i.status);if(!i.body)throw new Error(V("developmentRuns.invalidResponse"));const r=i.body.getReader(),s=new TextDecoder;let a="",l=!1;try{for(;;){const{value:u,done:d}=await r.read();a+=s.decode(u,{stream:!d});const f=a.split(/\r?\n\r?\n/);a=f.pop()||"";for(const h of f){const m=h.split(/\r?\n/),g=(c=m.find(y=>y.startsWith("event:")))==null?void 0:c.slice(6).trim();if(g==="done"){l=!0;continue}const b=m.filter(y=>y.startsWith("data:")).map(y=>y.slice(5).trimStart()).join(`
-`);if(!g||!b)continue;const v=JSON.parse(b);if(!Number.isSafeInteger(v.seq))throw new Error(V("developmentRuns.invalidResponse"));e.apply({seq:v.seq,type:g,payload:v})}if(n(),d)break}if(!l)throw new Error(V("developmentRuns.reconnecting"))}finally{await r.cancel().catch(()=>{}),r.releaseLock()}}async function gJe(e,t,n,i,r){const s=new Map;let a=0;const l=new Map;let c;r==null||r(h=>{t.aborted||h.sessionId!==e||(l.set(h.runId,h),c==null||c())});const u=h=>new Promise(m=>{const g=()=>{clearTimeout(b),t.removeEventListener("abort",g),c=void 0,m()},b=setTimeout(g,h);c=g,t.addEventListener("abort",g,{once:!0}),(t.aborted||l.size)&&g()}),d=new Map,f=()=>{var m;if(t.aborted)return;const h=[...s.values()];n(h.flatMap(g=>{let b=d.get(g);return(!b||b.cursor!==g.cursor)&&(b={cursor:g.cursor,turns:g.turns.map(v=>({...v}))},d.set(g,b)),b.turns}),((m=h[h.length-1])==null?void 0:m.run)||null)};for(;!t.aborted;)try{const h=l.size?[]:await bd.list(e,t),m=[...new Map([...h,...l.values()].map(g=>[g.runId,g])).values()];l.clear();for(const g of m){let b=s.get(g.runId);if(b||(b=new hJe(g),s.set(g.runId,b)),b.cursor>=g.lastSeq&&(b.run=g),b.cursor{a=0,i(""),f()})}catch(v){if(!(v instanceof Xx&&v.status===404&&zc(g)))throw v}}a=0,i(""),f(),await u(1500)}catch(h){if(t.aborted)return;if(h instanceof Xx&&[401,403,404].includes(h.status))throw h;i(V("developmentRuns.reconnecting")),await pJe(Math.min(1e3*2**a++,15e3),t)}}function bJe({sessionId:e,ownerId:t,onTurns:n,onBusy:i}){const[r,s]=p.useState(null),[a,l]=p.useState(""),[c,u]=p.useState(""),[d,f]=p.useState(!1),[h,m]=p.useState(!1),g=p.useRef({onTurns:n,onBusy:i});g.current={onTurns:n,onBusy:i};const b=p.useRef(0),v=p.useRef([]),y=p.useRef([]),w=p.useRef(null),x=()=>{const T=new Set(v.current.map(N=>{var _;return(_=N.meta)==null?void 0:_.localId}));y.current=y.current.filter(N=>{var _;return!T.has((_=N.meta)==null?void 0:_.localId)}),g.current.onTurns([...v.current,...y.current])},O=p.useRef(!1),S=p.useRef(!1),k=p.useRef(null),C=p.useRef({sessionId:e,ownerId:t});C.current={sessionId:e,ownerId:t},p.useEffect(()=>{b.current+=1,s(null),u(""),l(""),v.current=[],w.current=null;const T=k.current;if(((T==null?void 0:T.session)!==e||T.owner!==t)&&(y.current=[],m(!1),S.current=!1,k.current=null,O.current=!1,f(!1)),e&&x(),!e||!t)return;const N=new AbortController,_=()=>!N.signal.aborted&&C.current.sessionId===e&&C.current.ownerId===t;return gJe(e,N.signal,(D,M)=>{_()&&(v.current=D,x(),s(M),g.current.onBusy(O.current||!!(M&&!zc(M))),M&&zc(M)&&(m(!1),S.current=!1))},D=>{_()&&l(D)},D=>{_()&&(w.current=D)}).catch(D=>{_()&&u(D instanceof Error?D.message:String(D))}),()=>N.abort()},[e,t]);function E(T,N=e){const _=C.current.ownerId;let D=k.current;return(!D||D.session!==N||D.owner!==_||D.text!==T)&&(D={session:N,owner:_,text:T,id:crypto.randomUUID()},k.current=D),y.current.some(M=>{var P;return((P=M.meta)==null?void 0:P.localId)===`${D.id}:user`})||y.current.push({role:"user",blocks:[{kind:"text",text:T}],meta:{localId:`${D.id}:user`}},{role:"assistant",blocks:[{kind:"progress",text:V(r&&!zc(r)?"developmentRuns.processing":"developmentRuns.preparing")}],meta:{localId:`${D.id}:assistant`}}),[...y.current]}async function R(T,N=e){var L;if(!T.trim()||O.current||S.current)return!1;O.current=!0,f(!0),u("");const _=C.current.ownerId,D=()=>C.current.ownerId===_&&C.current.sessionId===N;E(T,N),x(),g.current.onBusy(!0);const M=k.current,P=(M==null?void 0:M.session)===N&&M.owner===_&&M.text===T?M:{session:N,owner:_,text:T,id:crypto.randomUUID(),runId:void 0,stopRequested:!1};k.current=P;try{const B=await bd.list(N),I=B[B.length-1];if(!D())return!1;!P.runId&&I&&!zc(I)&&I.requestId!==P.id&&(P.runId=I.runId);let z;return P.runId?(await bd.steer(P.runId,T,P.id),z=await bd.get(P.runId)):z=await bd.create(N,T,P.id),(P.stopRequested||D()&&S.current)&&(z=await bd.stop(z.runId)),D()&&(s(z),(L=w.current)==null||L.call(w,z),g.current.onBusy(!zc(z)),k.current=null),!0}catch(B){return D()&&(g.current.onBusy(!!(r&&!zc(r))),u(B instanceof Error?B.message:String(B)),P.stopRequested&&(S.current=!1,m(!1))),!1}finally{D()&&(O.current=!1,f(!1))}}async function A(){S.current=!0,m(!0),u(""),k.current&&(k.current.stopRequested=!0);const T=b.current;try{const _=(await bd.list(e)).find(D=>!zc(D));if(_){const D=await bd.stop(_.runId);T===b.current&&s(D)}else!O.current&&T===b.current&&(S.current=!1,m(!1))}catch(N){T===b.current&&(u(N instanceof Error?N.message:String(N)),m(!1),S.current=!1)}}async function j(){if(!r)return;const T=b.current;try{const N=await bd.resume(r.runId);T===b.current&&(s(N),u(""))}catch(N){T===b.current&&u(N instanceof Error?N.message:String(N))}}return{run:r,connection:a,error:c,submitting:d,stopPending:h,prepare:E,submit:R,stop:A,resume:j}}function xY(e){return e?["stopping","waiting_user","failed","cancelled"].includes(e.state)?e.statusMessage:e.phase==="reporting"?V("developmentRuns.reporting"):e.state==="recovering"?e.statusMessage:["outcome_read","delivery"].includes(e.phase)?V("developmentRuns.packaging"):e.phase==="version"?V("developmentRuns.savingVersion"):e.phase==="cycle_complete"?V("developmentRuns.finishing"):e.statusMessage:""}function gTe(e){if(e==null||!Number.isFinite(e)||e<0)return V("developmentRuns.notReported");const t=Math.round(e);if(t===0)return`<${V("developmentRuns.durationUnits.milliseconds",{value:"1"})}`;if(t<1e3)return V("developmentRuns.durationUnits.milliseconds",{value:t.toLocaleString(F$())});const n=Math.round(t/100);return[["hours",Math.floor(n/36e3)],["minutes",Math.floor(n%36e3/600)],["seconds",n%600/10]].filter(([,r])=>r>0).map(([r,s])=>V(`developmentRuns.durationUnits.${r}`,{value:s.toLocaleString(F$(),{maximumFractionDigits:1})})).join(" ")}const z5=e=>e&&typeof e=="object"&&!Array.isArray(e)?e:{},wY=e=>typeof e=="string"?e.replace(/\s+/g," ").trim().slice(0,160):"";function bTe(e){var n;const t=z5(e.args);if(e.itemType==="dynamicToolCall"&&e.name==="submit_build_result")return V("developmentRuns.submitResult");if(e.itemType==="commandExecution"){const i=Array.isArray(t.commandActions)?t.commandActions.map(z5):[],r=new Set(i.map(c=>c.type));if(i.length&&r.size===1){if(r.has("read"))return V("developmentRuns.read",{target:"Read project files"});if(r.has("listFiles"))return V("developmentRuns.listFiles",{target:"List directory"});if(r.has("search"))return V("developmentRuns.search",{target:"Search project files"})}const s=typeof t.command=="string"?t.command:"",l=((n=[[/\b(?:pytest|vitest|jest)\b|\b(?:npm|pnpm|yarn) (?:run )?test\b/,"Run tests"],[/\b(?:npm|pnpm|yarn) (?:ci|install|add)\b|\b(?:pip|pip3|uv pip) install\b|\buv sync\b/,"Install dependencies"],[/\b(?:ruff|eslint|prettier|pyright|tsc)\b/,"Check code quality"],[/\b(?:npm|pnpm|yarn) (?:run )?build\b|\bpython[^;]* -m build\b/,"Build project"],[/\bgit (?:status|diff|log|show)\b/,"Inspect Git changes"],[/\bgit (?:add|commit)\b/,"Save Git changes"],[/\b(?:curl|wget)\b/,"Send HTTP request"],[/\bcompileall\b/,"Check Python syntax"]].find(([c])=>c.test(s)))==null?void 0:n[1])||"Run shell command";return V("developmentRuns.command",{target:l})}if(e.itemType==="fileChange"){const i=Array.isArray(t.changes)?t.changes.map(r=>wY(z5(r).path)).filter(Boolean):[];return V("developmentRuns.editFiles",{target:i.join(", ")})}return e.itemType==="webSearch"?V("developmentRuns.webSearch",{target:wY(t.query)}):e.name}const yJe=e=>["tool","thinking","plan","diff"].includes(e.kind);function vJe(e){const t=[];return e.forEach((n,i)=>{if(n.kind==="progress")return;const r=yJe(n),s=t[t.length-1];r&&(s!=null&&s.process)?s.blocks.push(n):t.push({id:n.id||`${n.kind}:${i}`,process:r,blocks:[n]})}),t}const OY="M 15 15 C 15 5, 25 5, 30 15 C 35 25, 45 25, 45 15 C 45 5, 35 5, 30 15 C 25 25, 15 25, 15 15";function gy({variant:e="infinity",size:t=e==="ring"?40:48,label:n="加载中",decorative:i=!1,className:r="",style:s}){const a=BI();return o.jsxs("span",{className:`studio-loading studio-loading--${e} ${r}`.trim(),style:s,role:i?void 0:"status","aria-live":i?void 0:"polite","aria-hidden":i||void 0,children:[e==="infinity"?o.jsxs("svg",{className:"studio-loading__infinity",width:t,height:t/2,viewBox:"0 0 60 30",fill:"none","aria-hidden":"true",children:[o.jsx("path",{className:"studio-loading__track",d:OY,strokeWidth:"4",strokeLinecap:"round"}),o.jsx(cr.path,{className:"studio-loading__path",d:OY,strokeWidth:"4",strokeLinecap:"round",strokeDasharray:a?void 0:"100",initial:{strokeDashoffset:100},animate:{strokeDashoffset:a?0:[100,-100]},transition:{duration:a?0:2,repeat:a?0:1/0,ease:"linear"}})]}):o.jsx(cr.div,{className:"studio-loading__ring",style:{width:t,height:t,borderWidth:t*3/40},"aria-hidden":"true",animate:{rotate:a?0:360},transition:{duration:a?0:1,repeat:a?0:1/0,ease:"linear"}}),!i&&o.jsx("span",{className:"studio-loading__label",children:n})]})}function Ys({className:e="",type:t="button",variant:n="primary",size:i="default",startIcon:r,endIcon:s,iconOnly:a=!1,hoverEffect:l="background",loading:c=!1,disabled:u,children:d,...f}){return o.jsxs("button",{...f,type:t,disabled:u||c,"aria-busy":c||f["aria-busy"],"data-hover-effect":a?l:void 0,className:`studio-button studio-button--${n} studio-button--size-${i}${a?" studio-button--icon-only":""}${c?" studio-button--loading":""} ${e}`.trim(),children:[r&&o.jsx("span",{className:"studio-button__icon","aria-hidden":"true",children:r}),!a&&o.jsx("span",{className:"studio-button__label",children:d}),!a&&s&&o.jsx("span",{className:"studio-button__icon studio-button__end-icon","aria-hidden":"true",children:s}),c&&o.jsx("span",{className:"studio-button__loading","aria-hidden":"true",children:o.jsx(gy,{variant:"ring",size:16,decorative:!0})})]})}function xJe({variant:e,...t}){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:e==="warning"?o.jsxs(o.Fragment,{children:[o.jsx("path",{d:"m10.3 4.5-7.6 13a2 2 0 0 0 1.7 3h15.2a2 2 0 0 0 1.7-3l-7.6-13a2 2 0 0 0-3.4 0Z"}),o.jsx("path",{d:"M12 9v4m0 3.5h.01"})]}):o.jsxs(o.Fragment,{children:[o.jsx("circle",{cx:"12",cy:"12",r:"8.5"}),e==="success"?o.jsx("path",{d:"m8 12 2.7 2.7L16 9.4"}):e==="error"?o.jsx("path",{d:"m9.2 9.2 5.6 5.6m0-5.6-5.6 5.6"}):o.jsx("path",{d:"M12 11v5m0-8h.01"})]})})}function wJe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})}function OJe({variant:e="info",title:t,description:n,action:i,onDismiss:r,closeLabel:s="关闭通知",className:a="",role:l="status",...c}){return o.jsxs("div",{...c,role:l,className:`studio-toast ${a}`.trim(),"data-variant":e,children:[o.jsx(xJe,{variant:e,className:"studio-toast__status"}),o.jsxs("div",{className:"studio-toast__content",children:[t!=null&&o.jsx("div",{className:"studio-toast__title",children:t}),n!=null&&o.jsx("div",{className:"studio-toast__description",children:n}),i!=null&&o.jsx("div",{className:"studio-toast__action",children:i})]}),r&&o.jsx(Ys,{variant:"ghost",iconOnly:!0,startIcon:o.jsx(wJe,{}),"aria-label":s,onClick:r,className:"studio-toast__close"})]})}function QU(){}const kJe=Object.freeze([]),_l=Object.freeze({});function JI(e){p.useEffect(e,kJe)}const kY={};function Xu(e,t){const n=p.useRef(kY);return n.current===kY&&(n.current=e(t)),n}const SJe=()=>{},Fn=typeof document<"u"?p.useLayoutEffect:SJe;function EJe(e,t){return function(i,...r){const s=new URL(e);return s.searchParams.set("code",i.toString()),r.forEach(a=>s.searchParams.append("args[]",a)),`${t} error #${i}; visit ${s} for the full message.`}}const mc=EJe("https://base-ui.com/production-error","Base UI"),yTe=p.createContext(void 0);function zU(){const e=p.useContext(yTe);if(!e)throw new Error(mc(73));return e}var vTe={exports:{}},xTe={};/**
+data: ${JSON.stringify({...n,...r?{id:r}:{},...a?{snapshot:!0}:{}})}`)}(t.type==="run.input"||t.type==="run.input_status")&&n.status==="delivered"&&typeof n.turnId=="string"&&typeof n.clientId=="string"&&this.nativeInputs.set(n.turnId,n.clientId),this.decorate(),this.cursor=t.seq}decorate(){const t=!zc(this.run)&&this.run.state!=="waiting_user",n=[...this.turns].reverse().find(i=>i.role==="assistant");for(const i of this.turns)i.role==="assistant"&&(i.meta={...i.meta,streaming:t&&i===n});for(const i of this.metrics.values()){if(!["completed","failed","interrupted","cancelled","unavailable"].includes(i.status))continue;const r=new Map;for(const u of this.turns)for(const d of u.blocks)d.kind==="tool"&&d.turnId===i.turnId&&d.id&&r.set(d.id,d);const s=[...r.values()].filter(u=>typeof u.durationMs=="number"&&Number.isFinite(u.durationMs)&&u.durationMs>=0),a={...i,toolCalls:r.size,toolDurationComplete:s.length===r.size,toolDurationMs:s.length||!r.size?s.reduce((u,d)=>u+d.durationMs,0):void 0},l=this.nativeInputs.get(i.turnId),c=this.turns.find(u=>{var d;return((d=u.meta)==null?void 0:d.localId)===`${l}:assistant`});if(c){const u=c.blocks.reduce((d,f,h)=>f.turnId===i.turnId?h:d,-1);c.blocks.splice(u<0?c.blocks.length:u+1,0,{kind:"turn-summary",id:`${i.turnId}:summary`,turnId:i.turnId,value:a})}}}}function hJe(e,t){return new Promise((n,i)=>{if(t.aborted){i(new DOMException("Aborted","AbortError"));return}const r=()=>{clearTimeout(s),i(new DOMException("Aborted","AbortError"))},s=setTimeout(()=>{t.removeEventListener("abort",r),n()},e);t.addEventListener("abort",r,{once:!0})})}async function pJe(e,t,n){var c;const i=await pn(`${pTe}/runs/${encodeURIComponent(e.run.runId)}/events?after=${e.cursor}`,{signal:t,headers:Yr({Accept:"text/event-stream"})},0);if(!i.ok)throw new Xx(V("developmentRuns.requestFailed"),i.status);if(!i.body)throw new Error(V("developmentRuns.invalidResponse"));const r=i.body.getReader(),s=new TextDecoder;let a="",l=!1;try{for(;;){const{value:u,done:d}=await r.read();a+=s.decode(u,{stream:!d});const f=a.split(/\r?\n\r?\n/);a=f.pop()||"";for(const h of f){const m=h.split(/\r?\n/),g=(c=m.find(y=>y.startsWith("event:")))==null?void 0:c.slice(6).trim();if(g==="done"){l=!0;continue}const b=m.filter(y=>y.startsWith("data:")).map(y=>y.slice(5).trimStart()).join(`
+`);if(!g||!b)continue;const v=JSON.parse(b);if(!Number.isSafeInteger(v.seq))throw new Error(V("developmentRuns.invalidResponse"));e.apply({seq:v.seq,type:g,payload:v})}if(n(),d)break}if(!l)throw new Error(V("developmentRuns.reconnecting"))}finally{await r.cancel().catch(()=>{}),r.releaseLock()}}async function mJe(e,t,n,i,r){const s=new Map;let a=0;const l=new Map;let c;r==null||r(h=>{t.aborted||h.sessionId!==e||(l.set(h.runId,h),c==null||c())});const u=h=>new Promise(m=>{const g=()=>{clearTimeout(b),t.removeEventListener("abort",g),c=void 0,m()},b=setTimeout(g,h);c=g,t.addEventListener("abort",g,{once:!0}),(t.aborted||l.size)&&g()}),d=new Map,f=()=>{var m;if(t.aborted)return;const h=[...s.values()];n(h.flatMap(g=>{let b=d.get(g);return(!b||b.cursor!==g.cursor)&&(b={cursor:g.cursor,turns:g.turns.map(v=>({...v}))},d.set(g,b)),b.turns}),((m=h[h.length-1])==null?void 0:m.run)||null)};for(;!t.aborted;)try{const h=l.size?[]:await bd.list(e,t),m=[...new Map([...h,...l.values()].map(g=>[g.runId,g])).values()];l.clear();for(const g of m){let b=s.get(g.runId);if(b||(b=new fJe(g),s.set(g.runId,b)),b.cursor>=g.lastSeq&&(b.run=g),b.cursor{a=0,i(""),f()})}catch(v){if(!(v instanceof Xx&&v.status===404&&zc(g)))throw v}}a=0,i(""),f(),await u(1500)}catch(h){if(t.aborted)return;if(h instanceof Xx&&[401,403,404].includes(h.status))throw h;i(V("developmentRuns.reconnecting")),await hJe(Math.min(1e3*2**a++,15e3),t)}}function gJe({sessionId:e,ownerId:t,onTurns:n,onBusy:i}){const[r,s]=p.useState(null),[a,l]=p.useState(""),[c,u]=p.useState(""),[d,f]=p.useState(!1),[h,m]=p.useState(!1),g=p.useRef({onTurns:n,onBusy:i});g.current={onTurns:n,onBusy:i};const b=p.useRef(0),v=p.useRef([]),y=p.useRef([]),w=p.useRef(null),x=()=>{const T=new Set(v.current.map(N=>{var _;return(_=N.meta)==null?void 0:_.localId}));y.current=y.current.filter(N=>{var _;return!T.has((_=N.meta)==null?void 0:_.localId)}),g.current.onTurns([...v.current,...y.current])},O=p.useRef(!1),S=p.useRef(!1),k=p.useRef(null),C=p.useRef({sessionId:e,ownerId:t});C.current={sessionId:e,ownerId:t},p.useEffect(()=>{b.current+=1,s(null),u(""),l(""),v.current=[],w.current=null;const T=k.current;if(((T==null?void 0:T.session)!==e||T.owner!==t)&&(y.current=[],m(!1),S.current=!1,k.current=null,O.current=!1,f(!1)),e&&x(),!e||!t)return;const N=new AbortController,_=()=>!N.signal.aborted&&C.current.sessionId===e&&C.current.ownerId===t;return mJe(e,N.signal,(D,M)=>{_()&&(v.current=D,x(),s(M),g.current.onBusy(O.current||!!(M&&!zc(M))),M&&zc(M)&&(m(!1),S.current=!1))},D=>{_()&&l(D)},D=>{_()&&(w.current=D)}).catch(D=>{_()&&u(D instanceof Error?D.message:String(D))}),()=>N.abort()},[e,t]);function E(T,N=e){const _=C.current.ownerId;let D=k.current;return(!D||D.session!==N||D.owner!==_||D.text!==T)&&(D={session:N,owner:_,text:T,id:crypto.randomUUID()},k.current=D),y.current.some(M=>{var P;return((P=M.meta)==null?void 0:P.localId)===`${D.id}:user`})||y.current.push({role:"user",blocks:[{kind:"text",text:T}],meta:{localId:`${D.id}:user`}},{role:"assistant",blocks:[{kind:"progress",text:V(r&&!zc(r)?"developmentRuns.processing":"developmentRuns.preparing")}],meta:{localId:`${D.id}:assistant`}}),[...y.current]}async function R(T,N=e){var L;if(!T.trim()||O.current||S.current)return!1;O.current=!0,f(!0),u("");const _=C.current.ownerId,D=()=>C.current.ownerId===_&&C.current.sessionId===N;E(T,N),x(),g.current.onBusy(!0);const M=k.current,P=(M==null?void 0:M.session)===N&&M.owner===_&&M.text===T?M:{session:N,owner:_,text:T,id:crypto.randomUUID(),runId:void 0,stopRequested:!1};k.current=P;try{const B=await bd.list(N),I=B[B.length-1];if(!D())return!1;!P.runId&&I&&!zc(I)&&I.requestId!==P.id&&(P.runId=I.runId);let z;return P.runId?(await bd.steer(P.runId,T,P.id),z=await bd.get(P.runId)):z=await bd.create(N,T,P.id),(P.stopRequested||D()&&S.current)&&(z=await bd.stop(z.runId)),D()&&(s(z),(L=w.current)==null||L.call(w,z),g.current.onBusy(!zc(z)),k.current=null),!0}catch(B){return D()&&(g.current.onBusy(!!(r&&!zc(r))),u(B instanceof Error?B.message:String(B)),P.stopRequested&&(S.current=!1,m(!1))),!1}finally{D()&&(O.current=!1,f(!1))}}async function A(){S.current=!0,m(!0),u(""),k.current&&(k.current.stopRequested=!0);const T=b.current;try{const _=(await bd.list(e)).find(D=>!zc(D));if(_){const D=await bd.stop(_.runId);T===b.current&&s(D)}else!O.current&&T===b.current&&(S.current=!1,m(!1))}catch(N){T===b.current&&(u(N instanceof Error?N.message:String(N)),m(!1),S.current=!1)}}async function j(){if(!r)return;const T=b.current;try{const N=await bd.resume(r.runId);T===b.current&&(s(N),u(""))}catch(N){T===b.current&&u(N instanceof Error?N.message:String(N))}}return{run:r,connection:a,error:c,submitting:d,stopPending:h,prepare:E,submit:R,stop:A,resume:j}}function vY(e){return e?["stopping","waiting_user","failed","cancelled"].includes(e.state)?e.statusMessage:e.phase==="reporting"?V("developmentRuns.reporting"):e.state==="recovering"?e.statusMessage:["outcome_read","delivery"].includes(e.phase)?V("developmentRuns.packaging"):e.phase==="version"?V("developmentRuns.savingVersion"):e.phase==="cycle_complete"?V("developmentRuns.finishing"):e.statusMessage:""}function mTe(e){if(e==null||!Number.isFinite(e)||e<0)return V("developmentRuns.notReported");const t=Math.round(e);if(t===0)return`<${V("developmentRuns.durationUnits.milliseconds",{value:"1"})}`;if(t<1e3)return V("developmentRuns.durationUnits.milliseconds",{value:t.toLocaleString(F$())});const n=Math.round(t/100);return[["hours",Math.floor(n/36e3)],["minutes",Math.floor(n%36e3/600)],["seconds",n%600/10]].filter(([,r])=>r>0).map(([r,s])=>V(`developmentRuns.durationUnits.${r}`,{value:s.toLocaleString(F$(),{maximumFractionDigits:1})})).join(" ")}const z5=e=>e&&typeof e=="object"&&!Array.isArray(e)?e:{},xY=e=>typeof e=="string"?e.replace(/\s+/g," ").trim().slice(0,160):"";function gTe(e){var n;const t=z5(e.args);if(e.itemType==="dynamicToolCall"&&e.name==="submit_build_result")return V("developmentRuns.submitResult");if(e.itemType==="commandExecution"){const i=Array.isArray(t.commandActions)?t.commandActions.map(z5):[],r=new Set(i.map(c=>c.type));if(i.length&&r.size===1){if(r.has("read"))return V("developmentRuns.read",{target:"Read project files"});if(r.has("listFiles"))return V("developmentRuns.listFiles",{target:"List directory"});if(r.has("search"))return V("developmentRuns.search",{target:"Search project files"})}const s=typeof t.command=="string"?t.command:"",l=((n=[[/\b(?:pytest|vitest|jest)\b|\b(?:npm|pnpm|yarn) (?:run )?test\b/,"Run tests"],[/\b(?:npm|pnpm|yarn) (?:ci|install|add)\b|\b(?:pip|pip3|uv pip) install\b|\buv sync\b/,"Install dependencies"],[/\b(?:ruff|eslint|prettier|pyright|tsc)\b/,"Check code quality"],[/\b(?:npm|pnpm|yarn) (?:run )?build\b|\bpython[^;]* -m build\b/,"Build project"],[/\bgit (?:status|diff|log|show)\b/,"Inspect Git changes"],[/\bgit (?:add|commit)\b/,"Save Git changes"],[/\b(?:curl|wget)\b/,"Send HTTP request"],[/\bcompileall\b/,"Check Python syntax"]].find(([c])=>c.test(s)))==null?void 0:n[1])||"Run shell command";return V("developmentRuns.command",{target:l})}if(e.itemType==="fileChange"){const i=Array.isArray(t.changes)?t.changes.map(r=>xY(z5(r).path)).filter(Boolean):[];return V("developmentRuns.editFiles",{target:i.join(", ")})}return e.itemType==="webSearch"?V("developmentRuns.webSearch",{target:xY(t.query)}):e.name}const bJe=e=>["tool","thinking","plan","diff"].includes(e.kind);function yJe(e){const t=[];return e.forEach((n,i)=>{if(n.kind==="progress")return;const r=bJe(n),s=t[t.length-1];r&&(s!=null&&s.process)?s.blocks.push(n):t.push({id:n.id||`${n.kind}:${i}`,process:r,blocks:[n]})}),t}const wY="M 15 15 C 15 5, 25 5, 30 15 C 35 25, 45 25, 45 15 C 45 5, 35 5, 30 15 C 25 25, 15 25, 15 15";function gy({variant:e="infinity",size:t=e==="ring"?20:32,label:n="加载中",decorative:i=!1,className:r="",style:s}){const a=BI(),l=typeof t=="number"?t/2:`calc(${t} / 2)`,c=typeof t=="number"?t*3/40:`calc(${t} * 3 / 40)`;return o.jsxs("span",{className:`studio-loading studio-loading--${e} ${r}`.trim(),style:s,role:i?void 0:"status","aria-live":i?void 0:"polite","aria-hidden":i||void 0,children:[e==="infinity"?o.jsxs("svg",{className:"studio-loading__infinity",width:typeof t=="number"?t:void 0,height:typeof l=="number"?l:void 0,style:typeof t=="string"?{width:t,height:l}:void 0,viewBox:"0 0 60 30",fill:"none","aria-hidden":"true",children:[o.jsx("path",{className:"studio-loading__track",d:wY,strokeWidth:"4",strokeLinecap:"round"}),o.jsx(cr.path,{className:"studio-loading__path",d:wY,strokeWidth:"4",strokeLinecap:"round",strokeDasharray:a?void 0:"100",initial:{strokeDashoffset:100},animate:{strokeDashoffset:a?0:[100,-100]},transition:{duration:a?0:2,repeat:a?0:1/0,ease:"linear"}})]}):o.jsx(cr.div,{className:"studio-loading__ring",style:{width:t,height:t,borderWidth:c},"aria-hidden":"true",animate:{rotate:a?0:360},transition:{duration:a?0:1,repeat:a?0:1/0,ease:"linear"}}),!i&&o.jsx("span",{className:"studio-loading__label",children:n})]})}function Us({className:e="",type:t="button",variant:n="primary",size:i="default",startIcon:r,endIcon:s,iconOnly:a=!1,hoverEffect:l="background",loading:c=!1,disabled:u,children:d,...f}){return o.jsxs("button",{...f,type:t,disabled:u||c,"aria-busy":c||f["aria-busy"],"data-hover-effect":a?l:void 0,className:`studio-button studio-button--${n} studio-button--size-${i}${a?" studio-button--icon-only":""}${c?" studio-button--loading":""} ${e}`.trim(),children:[r&&o.jsx("span",{className:"studio-button__icon","aria-hidden":"true",children:r}),!a&&o.jsx("span",{className:"studio-button__label",children:d}),!a&&s&&o.jsx("span",{className:"studio-button__icon studio-button__end-icon","aria-hidden":"true",children:s}),c&&o.jsx("span",{className:"studio-button__loading","aria-hidden":"true",children:o.jsx(gy,{variant:"ring",size:"var(--studio-button-icon-size)",decorative:!0})})]})}function vJe({variant:e,...t}){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:e==="warning"?o.jsxs(o.Fragment,{children:[o.jsx("path",{d:"m10.3 4.5-7.6 13a2 2 0 0 0 1.7 3h15.2a2 2 0 0 0 1.7-3l-7.6-13a2 2 0 0 0-3.4 0Z"}),o.jsx("path",{d:"M12 9v4m0 3.5h.01"})]}):o.jsxs(o.Fragment,{children:[o.jsx("circle",{cx:"12",cy:"12",r:"8.5"}),e==="success"?o.jsx("path",{d:"m8 12 2.7 2.7L16 9.4"}):e==="error"?o.jsx("path",{d:"m9.2 9.2 5.6 5.6m0-5.6-5.6 5.6"}):o.jsx("path",{d:"M12 11v5m0-8h.01"})]})})}function xJe(e){return o.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round","aria-hidden":"true",...e,children:o.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})}function wJe({variant:e="info",title:t,description:n,action:i,onDismiss:r,closeLabel:s="关闭通知",className:a="",role:l="status",...c}){return o.jsxs("div",{...c,role:l,className:`studio-toast ${a}`.trim(),"data-variant":e,children:[o.jsx(vJe,{variant:e,className:"studio-toast__status"}),o.jsxs("div",{className:"studio-toast__content",children:[t!=null&&o.jsx("div",{className:"studio-toast__title",children:t}),n!=null&&o.jsx("div",{className:"studio-toast__description",children:n}),i!=null&&o.jsx("div",{className:"studio-toast__action",children:i})]}),r&&o.jsx(Us,{variant:"ghost",iconOnly:!0,startIcon:o.jsx(xJe,{}),"aria-label":s,onClick:r,className:"studio-toast__close"})]})}function UU(){}const OJe=Object.freeze([]),_l=Object.freeze({});function JI(e){p.useEffect(e,OJe)}const OY={};function Xu(e,t){const n=p.useRef(OY);return n.current===OY&&(n.current=e(t)),n}const kJe=()=>{},Fn=typeof document<"u"?p.useLayoutEffect:kJe;function SJe(e,t){return function(i,...r){const s=new URL(e);return s.searchParams.set("code",i.toString()),r.forEach(a=>s.searchParams.append("args[]",a)),`${t} error #${i}; visit ${s} for the full message.`}}const mc=SJe("https://base-ui.com/production-error","Base UI"),bTe=p.createContext(void 0);function QU(){const e=p.useContext(bTe);if(!e)throw new Error(mc(73));return e}var yTe={exports:{}},vTe={};/**
* @license React
* use-sync-external-store-shim/with-selector.production.js
*
@@ -135,37 +135,37 @@ data: ${JSON.stringify({...n,...r?{id:r}:{},...a?{snapshot:!0}:{}})}`)}(t.type==
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
- */var eP=p,CJe=pI;function TJe(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var AJe=typeof Object.is=="function"?Object.is:TJe,_Je=CJe.useSyncExternalStore,jJe=eP.useRef,NJe=eP.useEffect,RJe=eP.useMemo,IJe=eP.useDebugValue;xTe.useSyncExternalStoreWithSelector=function(e,t,n,i,r){var s=jJe(null);if(s.current===null){var a={hasValue:!1,value:null};s.current=a}else a=s.current;s=RJe(function(){function c(m){if(!u){if(u=!0,d=m,m=i(m),r!==void 0&&a.hasValue){var g=a.value;if(r(g,m))return f=g}return f=m}if(g=f,AJe(d,m))return g;var b=i(m);return r!==void 0&&r(g,b)?(d=m,g):(d=m,f=b)}var u=!1,d,f,h=n===void 0?null:n;return[function(){return c(t())},h===null?void 0:function(){return c(h())}]},[t,n,i,r]);var l=_Je(e,s[0],s[1]);return NJe(function(){a.hasValue=!0,a.value=l},[l]),IJe(l),l};vTe.exports=xTe;var wTe=vTe.exports;const PJe=_w(wTe),DJe=parseInt(p.version,10);function VU(e){return DJe>=e}const MJe=VU(19),LJe=MJe?FJe:BJe;function OTe(e,t,n,i,r){return LJe(e,t,n,i,r)}function $Je(e,t,n,i,r){const s=p.useCallback(()=>t(e.getSnapshot(),n,i,r),[e,t,n,i,r]);return pI.useSyncExternalStore(e.subscribe,s,s)}function FJe(e,t,n,i,r){return $Je(e,t,n,i,r)}function BJe(e,t,n,i,r){return wTe.useSyncExternalStoreWithSelector(e.subscribe,e.getSnapshot,e.getSnapshot,s=>t(s,n,i,r))}class UJe{constructor(t){Jt(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));Jt(this,"getSnapshot",()=>this.state);this.state=t,this.listeners=new Set,this.updateTick=0}setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;const n=this.updateTick;for(const i of this.listeners){if(n!==this.updateTick)return;i(t)}}update(t){for(const n in t)if(!Object.is(this.state[n],t[n])){this.setState({...this.state,...t});return}}set(t,n){Object.is(this.state[t],n)||this.setState({...this.state,[t]:n})}notifyAll(){const t={...this.state};this.setState(t)}use(t,n,i,r){return OTe(this,t,n,i,r)}}const HU={...Fy},V5=HU.useInsertionEffect,QJe=V5&&V5!==HU.useLayoutEffect?V5:e=>e();function Hn(e){const t=Xu(zJe).current;return t.next=e,QJe(t.effect),t.trampoline}function zJe(){const e={next:void 0,callback:VJe,trampoline:(...t)=>{var n;return(n=e.callback)==null?void 0:n.call(e,...t)},effect:()=>{e.callback=e.next}};return e}function VJe(){}class tP extends UJe{constructor(t,n={},i){super(t),this.context=n,this.selectors=i}useSyncedValue(t,n){p.useDebugValue(t);const i=this;Fn(()=>{i.state[t]!==n&&i.set(t,n)},[i,t,n])}useSyncedValueWithCleanup(t,n){const i=this;Fn(()=>(i.state[t]!==n&&i.set(t,n),()=>{i.set(t,void 0)}),[i,t,n])}useSyncedValues(t){const n=this,i=Object.values(t);Fn(()=>{n.update(t)},[n,...i])}useControlledProp(t,n){p.useDebugValue(t);const i=this,r=n!==void 0;Fn(()=>{r&&!Object.is(i.state[t],n)&&i.setState({...i.state,[t]:n})},[i,t,n,r])}select(t,n,i,r){const s=this.selectors[t];return s(this.state,n,i,r)}useState(t,n,i,r){return p.useDebugValue(t),OTe(this,this.selectors[t],n,i,r)}useContextCallback(t,n){p.useDebugValue(t);const i=Hn(n??QU);this.context[t]=i}useStateSetter(t){const n=p.useRef(void 0);return n.current===void 0&&(n.current=i=>{this.set(t,i)}),n.current}observe(t,n){let i;typeof t=="function"?i=t:i=this.selectors[t];let r=i(this.state);return n(r,r,this),this.subscribe(s=>{const a=i(s);if(!Object.is(r,a)){const l=r;r=a,n(a,l,this)}})}}function nP(){return typeof window<"u"}function Va(e){return qU(e)?(e.nodeName||"").toLowerCase():"#document"}function zs(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Ep(e){var t;return(t=(qU(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function qU(e){return nP()?e instanceof Node||e instanceof zs(e).Node:!1}function lr(e){return nP()?e instanceof Element||e instanceof zs(e).Element:!1}function Us(e){return nP()?e instanceof HTMLElement||e instanceof zs(e).HTMLElement:!1}function Yx(e){return!nP()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof zs(e).ShadowRoot}function CC(e){const{overflow:t,overflowX:n,overflowY:i,display:r}=du(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&r!=="inline"&&r!=="contents"}function HJe(e){return/^(table|td|th)$/.test(Va(e))}function iP(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const qJe=/transform|translate|scale|rotate|perspective|filter/,WJe=/paint|layout|strict|content/,nb=e=>!!e&&e!=="none";let H5;function WU(e){const t=lr(e)?du(e):e;return nb(t.transform)||nb(t.translate)||nb(t.scale)||nb(t.rotate)||nb(t.perspective)||!KU()&&(nb(t.backdropFilter)||nb(t.filter))||qJe.test(t.willChange||"")||WJe.test(t.contain||"")}function KJe(e){let t=rg(e);for(;Us(t)&&!zm(t);){if(WU(t))return t;if(iP(t))return null;t=rg(t)}return null}function KU(){return H5==null&&(H5=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),H5}function zm(e){return/^(html|body|#document)$/.test(Va(e))}function du(e){return zs(e).getComputedStyle(e)}function rP(e){return lr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function rg(e){if(Va(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Yx(e)&&e.host||Ep(e);return Yx(t)?t.host:t}function kTe(e){const t=rg(e);return zm(t)?(e.ownerDocument||e).body:Us(t)&&CC(t)?t:kTe(t)}function qS(e,t,n){var i;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=kTe(e),s=r===((i=e.ownerDocument)==null?void 0:i.body),a=zs(r);if(s){const l=rF(a);return t.concat(a,a.visualViewport||[],CC(r)?r:[],l&&n?qS(l):[])}else return t.concat(r,qS(r,[],n))}function rF(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function If(...e){return()=>{for(let t=0;t{e.removeEventListener(t,n,i)}}const T2=null;let GJe=class{constructor(){Jt(this,"callbacks",[]);Jt(this,"callbacksCount",0);Jt(this,"nextId",1);Jt(this,"startId",1);Jt(this,"isScheduled",!1);Jt(this,"tick",t=>{var r;this.isScheduled=!1;const n=this.callbacks,i=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,i>0)for(let s=0;s=this.callbacks.length||(this.callbacks[n]=null,this.callbacksCount-=1)}},A2=new GJe;class Jl{constructor(){Jt(this,"currentId",T2);Jt(this,"cancel",()=>{this.currentId!==T2&&(A2.cancel(this.currentId),this.currentId=T2)});Jt(this,"disposeEffect",()=>this.cancel)}static create(){return new Jl}static request(t){return A2.request(t)}static cancel(t){return A2.cancel(t)}request(t){this.cancel(),this.currentId=A2.request(()=>{this.currentId=T2,t()})}}function GU(){const e=Xu(Jl.create).current;return JI(e.disposeEffect),e}const oO=0;class fu{constructor(){Jt(this,"currentId",oO);Jt(this,"clear",()=>{this.currentId!==oO&&(clearTimeout(this.currentId),this.currentId=oO)});Jt(this,"disposeEffect",()=>this.clear)}static create(){return new fu}start(t,n){this.clear(),this.currentId=setTimeout(()=>{this.currentId=oO,n()},t)}isStarted(){return this.currentId!==oO}}function by(){const e=Xu(fu.create).current;return JI(e.disposeEffect),e}let SY=0;function XJe(e){return SY+=1,`${e}-${Math.random().toString(36).slice(2,6)}-${SY}`}function q5(e,t){if(typeof e=="string")return{description:e};if(typeof e=="function"){const n=e(t);return typeof n=="string"?{description:n}:n}return e}function YJe(){return typeof navigator>"u"?{userAgent:"",platform:"",maxTouchPoints:0}:{userAgent:navigator.userAgent,platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??0}}const{userAgent:ZJe,platform:JJe,maxTouchPoints:eet}=YJe(),sP=ZJe.toLowerCase(),WS=JJe.toLowerCase(),oP=/^i(os$|p)/.test(WS)||WS==="macintel"&&eet>1,EY="android",sF=WS===EY||sP.includes(EY),tet=!oP&&WS.startsWith("mac");WS.startsWith("win");const net=tet||oP;var wle;const Vw=typeof CSS<"u"&&!!((wle=CSS.supports)!=null&&wle.call(CSS,"-webkit-backdrop-filter:none"));!Vw&&sP.includes("firefox");!Vw&&sP.includes("chrom");const iet=net,STe=/jsdom|happydom/.test(sP),oF="data-base-ui-focusable",ETe="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function Yl(e){var n;let t=e.activeElement;for(;((n=t==null?void 0:t.shadowRoot)==null?void 0:n.activeElement)!=null;)t=t.shadowRoot.activeElement;return t}function Qn(e,t){var i;if(!e||!t)return!1;const n=(i=t.getRootNode)==null?void 0:i.call(t);if(e.contains(t))return!0;if(n&&Yx(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function ea(e){return"composedPath"in e?e.composedPath()[0]:e.target}function CTe(e,t){if(!lr(e))return!1;const n=e;if(t.hasElement(n))return!n.hasAttribute("data-trigger-disabled");for(const[,i]of t.entries())if(Qn(i,n))return!i.hasAttribute("data-trigger-disabled");return!1}function W5(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);const n=e;return n.target!=null&&t.contains(n.target)}function ret(e){return e.matches("html,body")}function XU(e){return Us(e)&&e.matches(ETe)}function set(e){return(e==null?void 0:e.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${ETe}`))!=null}function CY(e){return e?e.getAttribute("role")==="combobox"&&XU(e):!1}function aF(e){if(!e||STe)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function TY(e){return e?e.hasAttribute(oF)?e:e.querySelector(`[${oF}]`)||e:null}function sg(e,t,n=!0){return e.filter(r=>r.parentId===t).flatMap(r=>{var s;return[...!n||(s=r.context)!=null&&s.open?[r]:[],...sg(e,r.id,n)]})}function AY(e,t){var r;let n=[],i=(r=e.find(s=>s.id===t))==null?void 0:r.parentId;for(;i;){const s=e.find(a=>a.id===i);i=s==null?void 0:s.parentId,s&&(n=n.concat(s))}return n}function oet(e){e.preventDefault(),e.stopPropagation()}function aet(e){return"nativeEvent"in e}function cet(e){return e.pointerType===""&&e.isTrusted?!0:sF&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function TTe(e){return STe?!1:!sF&&e.width===0&&e.height===0||sF&&e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0&&e.pointerType==="touch"}function rx(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function uet(e){const t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}const det=["top","right","bottom","left"],og=Math.min,qh=Math.max,SN=Math.round,_2=Math.floor,Wh=e=>({x:e,y:e}),fet={left:"right",right:"left",bottom:"top",top:"bottom"};function YU(e,t,n){return qh(e,og(t,n))}function $f(e,t){return typeof e=="function"?e(t):e}function Hu(e){return e.split("-")[0]}function Cp(e){return e.split("-")[1]}function ZU(e){return e==="x"?"y":"x"}function aP(e){return e==="y"?"height":"width"}function Lu(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function lP(e){return ZU(Lu(e))}function het(e,t,n){n===void 0&&(n=!1);const i=Cp(e),r=lP(e),s=aP(r);let a=r==="x"?i===(n?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(a=EN(a)),[a,EN(a)]}function pet(e){const t=EN(e);return[lF(e),t,lF(t)]}function lF(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const _Y=["left","right"],jY=["right","left"],met=["top","bottom"],get=["bottom","top"];function bet(e,t,n){switch(e){case"top":case"bottom":return n?t?jY:_Y:t?_Y:jY;case"left":case"right":return t?met:get;default:return[]}}function yet(e,t,n,i){const r=Cp(e);let s=bet(Hu(e),n==="start",i);return r&&(s=s.map(a=>a+"-"+r),t&&(s=s.concat(s.map(lF)))),s}function EN(e){const t=Hu(e);return fet[t]+e.slice(t.length)}function vet(e){var t,n,i,r;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(i=e.bottom)!=null?i:0,left:(r=e.left)!=null?r:0}}function JU(e){return typeof e!="number"?vet(e):{top:e,right:e,bottom:e,left:e}}function CN(e){const{x:t,y:n,width:i,height:r}=e;return{width:i,height:r,top:n,left:t,right:t+i,bottom:n+r,x:t,y:n}}function xet(e){return e.visibility==="hidden"||e.visibility==="collapse"}function ATe(e,t=e?du(e):null){return!e||!e.isConnected||!t||xet(t)?!1:typeof e.checkVisibility=="function"?e.checkVisibility():t.display!=="none"&&t.display!=="contents"}const wet='a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';function Oet(e){const t=e.assignedSlot;if(t)return t;if(e.parentElement)return e.parentElement;const n=e.getRootNode();return Yx(n)?n.host:null}function cF(e){for(const t of Array.from(e.children))if(Va(t)==="summary")return t;return null}function ket(e,t){const n=cF(t);return!!n&&(e===n||Qn(n,e))}function _Te(e){const t=e?Va(e):"";return e!=null&&e.matches(wet)&&(t!=="summary"||e.parentElement!=null&&Va(e.parentElement)==="details"&&cF(e.parentElement)===e)&&(t!=="details"||cF(e)==null)&&(t!=="input"||e.type!=="hidden")}function jTe(e){if(!_Te(e)||!e.isConnected||e.matches(":disabled"))return!1;for(let t=e;t;t=Oet(t)){const n=t!==e,i=Va(t)==="slot";if(t.hasAttribute("inert")||n&&Va(t)==="details"&&!t.open&&!ket(e,t)||t.hasAttribute("hidden")||!i&&!Eet(t,n))return!1}return!0}function Eet(e,t){const n=du(e);return t?n.display!=="none":ATe(e,n)}function NTe(e){const t=e.tabIndex;if(t<0){const n=Va(e);if(n==="details"||n==="audio"||n==="video"||Us(e)&&e.isContentEditable)return 0}return t}function K5(e){if(Va(e)!=="input")return null;const t=e;return t.type==="radio"&&t.name!==""?t:null}function Cet(e,t){const n=K5(e);if(!n)return!0;const i=t.find(r=>{const s=K5(r);return(s==null?void 0:s.name)===n.name&&s.form===n.form&&s.checked});return i?i===n:t.find(r=>{const s=K5(r);return(s==null?void 0:s.name)===n.name&&s.form===n.form})===n}function RTe(e){if(Us(e)&&Va(e)==="slot"){const t=e.assignedElements({flatten:!0});if(t.length>0)return t}return Us(e)&&e.shadowRoot?Array.from(e.shadowRoot.children):Array.from(e.children)}function ITe(e,t){RTe(e).forEach(n=>{_Te(n)&&t.push(n),ITe(n,t)})}function PTe(e,t,n){RTe(e).forEach(i=>{Us(i)&&i.matches(t)&&n.push(i),PTe(i,t,n)})}function eQ(e){return jTe(e)&&NTe(e)>=0}function DTe(e){const t=[];return ITe(e,t),t.filter(jTe)}function TC(e){const t=DTe(e);return t.filter(n=>NTe(n)>=0&&Cet(n,t))}function MTe(e,t){const n=TC(e),i=n.length;if(i===0)return;const r=Yl(or(e)),s=n.indexOf(r),a=s===-1?t===1?0:i-1:s+t;return n[a]}function tQ(e){return MTe(or(e).body,1)||e}function LTe(e){return MTe(or(e).body,-1)||e}function $Te(e,t){if(!e)return null;const n=TC(or(e).body),i=n.length;if(i===0)return null;const r=n.indexOf(e);if(r===-1)return null;const s=(r+t+i)%i;return n[s]}function Tet(e){return $Te(e,1)}function Aet(e){return $Te(e,-1)}function sx(e,t){const n=t||e.currentTarget,i=e.relatedTarget;return!i||!Qn(n,i)}function _et(e){TC(e).forEach(n=>{n.dataset.tabindex=n.getAttribute("tabindex")||"",n.setAttribute("tabindex","-1")})}function NY(e){const t=[];PTe(e,"[data-tabindex]",t),t.forEach(n=>{const i=n.dataset.tabindex;delete n.dataset.tabindex,i?n.setAttribute("tabindex",i):n.removeAttribute("tabindex")})}function G5(e){const t=new Map;let n=0,i=0;return e.forEach((r,s)=>{const a=r.transitionStatus==="ending";t.set(r.id,{value:r,domIndex:s,visibleIndex:a?-1:n,offsetY:i}),i+=r.height||0,a||(n+=1)}),t}function X5(e,t){let n=0;return e.map(i=>{if(i.transitionStatus==="ending")return i;const r=n>=t;return n+=1,i.limited===r?i:{...i,limited:r}})}const tf={toasts:e=>e.toasts,isEmpty:e=>e.toasts.length===0,toast:(e,t)=>{var n;return(n=e.toastMetadata.get(t))==null?void 0:n.value},toastIndex:(e,t)=>{var n;return((n=e.toastMetadata.get(t))==null?void 0:n.domIndex)??-1},toastOffsetY:(e,t)=>{var n;return((n=e.toastMetadata.get(t))==null?void 0:n.offsetY)??0},toastVisibleIndex:(e,t)=>{var n;return((n=e.toastMetadata.get(t))==null?void 0:n.visibleIndex)??-1},focused:e=>e.focused,expanded:e=>e.hovering||e.focused,expandedOrOutOfFocus:e=>e.hovering||e.focused||!e.isWindowFocused,prevFocusElement:e=>e.prevFocusElement};class jet extends tP{constructor(n){super({...n,toastMetadata:G5(n.toasts)},{},tf);Jt(this,"timers",new Map);Jt(this,"areTimersPaused",!1);Jt(this,"setViewport",n=>{this.set("viewport",n)});Jt(this,"disposeEffect",()=>()=>{this.timers.forEach(n=>{var i;(i=n.timeout)==null||i.clear()}),this.timers.clear()});Jt(this,"addToast",n=>{const{timeout:i,limit:r}=this.state,s=n.id||XJe("toast");if(n.id){const u=tf.toast(this.state,n.id);if(u)if(u.transitionStatus==="ending")this.removeToast(n.id,!0);else{const{id:d,transitionStatus:f,...h}=n;return this.updateToastInternal(n.id,h,!0,!0),n.id}}const a={...n,id:s,updateKey:0,transitionStatus:"starting"},l=[a,...this.state.toasts];this.setToasts(X5(l,r));const c=a.timeout??i;return a.type!=="loading"&&c>0&&this.scheduleTimer(s,c,()=>this.closeToast(s)),tf.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),s});Jt(this,"updateToast",(n,i)=>{this.updateToastInternal(n,i,!1,!0)});Jt(this,"updateToastInternal",(n,i,r=!1,s=!1)=>{const{timeout:a,toasts:l}=this.state,c=tf.toast(this.state,n);if(!c||c.transitionStatus==="ending")return;const u={...c,...i,...s&&{updateKey:c.updateKey+1}};this.setToasts(l.map(y=>y.id===n?u:y));const d=u.timeout??a,f=c.timeout??a,h=Object.hasOwn(i,"timeout"),m=u.transitionStatus!=="ending"&&u.type!=="loading"&&d>0,g=this.timers.has(n),b=f!==d,v=c.type==="loading";if(!m&&g){this.clearTimer(n);return}m&&(!g||b||h||v||r)&&(this.clearTimer(n),this.scheduleTimer(n,d,()=>this.closeToast(n)),tf.expandedOrOutOfFocus(this.state)&&this.pauseTimers())});Jt(this,"closeToast",n=>{const i=n===void 0,{limit:r,toasts:s}=this.state;let a;if(i)a=s,this.clearTimers();else{const u=tf.toast(this.state,n);if(!u)return;a=[u],this.clearTimer(n)}const l=s.map(u=>i||u.id===n?{...u,transitionStatus:"ending",height:0}:u),c=X5(l,r);this.setToasts(c,!c.some(u=>u.transitionStatus!=="ending")),a.forEach(u=>{var d;u.transitionStatus!=="ending"&&((d=u.onClose)==null||d.call(u))}),this.handleFocusManagement(n)});Jt(this,"promiseToast",(n,i)=>{const r=q5(i.loading),s=this.addToast({...r,type:"loading"}),a=n.then(l=>{const c=q5(i.success,l);return this.updateToast(s,{...c,type:"success",timeout:c.timeout}),l}).catch(l=>{const c=q5(i.error,l);return this.updateToast(s,{...c,type:"error",timeout:c.timeout}),Promise.reject(l)});return{}.hasOwnProperty.call(i,"setPromise")&&i.setPromise(a),a});Jt(this,"handleDocumentPointerDown",n=>{if(n.pointerType!=="touch")return;const i=ea(n);Qn(this.state.viewport,i)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))})}syncProviderProps(n,i){const r=this.state.limit!==i;if(this.state.timeout===n&&!r)return;const s={timeout:n,limit:i};if(r){const a=X5(this.state.toasts,i);s.toasts=a,s.toastMetadata=G5(a)}this.update(s)}removeToast(n,i=!1){var l;const r=tf.toastIndex(this.state,n);if(r===-1)return;const s=this.state.toasts[r];i||(l=s==null?void 0:s.onRemove)==null||l.call(s);const a=[...this.state.toasts];a.splice(r,1),this.setToasts(a)}pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(n=>{n.timeout&&(n.timeout.clear(),n.remaining=Math.max(n.remaining-(Date.now()-n.start),0))}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((n,i)=>{n.remaining=n.remaining>0?n.remaining:n.delay,n.timeout??(n.timeout=fu.create()),n.timeout.start(n.remaining,()=>{this.handleTimerFired(i),n.callback()}),n.start=Date.now()}))}restoreFocusToPrevElement(){var n;(n=this.state.prevFocusElement)==null||n.focus({preventScroll:!0})}scheduleTimer(n,i,r){const s=Date.now(),l=!tf.expandedOrOutOfFocus(this.state)?fu.create():void 0;l==null||l.start(i,()=>{this.handleTimerFired(n),r()}),this.timers.set(n,{timeout:l,start:s,delay:i,remaining:i,callback:r})}clearTimers(){this.timers.forEach(n=>{var i;(i=n.timeout)==null||i.clear()}),this.timers.clear(),this.areTimersPaused=!1}clearTimer(n){var r;const i=this.timers.get(n);(r=i==null?void 0:i.timeout)==null||r.clear(),this.timers.delete(n),this.resetPausedStateIfNoTimersRemain()}handleTimerFired(n){this.timers.delete(n),this.resetPausedStateIfNoTimersRemain()}resetPausedStateIfNoTimersRemain(){this.timers.size===0&&(this.areTimersPaused=!1)}setToasts(n,i=n.length===0){const r={toasts:n,toastMetadata:G5(n)};i&&(r.hovering=!1,r.focused=!1),this.update(r)}handleFocusManagement(n){var c,u;const i=Yl(or(this.state.viewport));if(!this.state.viewport||!Qn(this.state.viewport,i)||!aF(i))return;if(n===void 0){this.restoreFocusToPrevElement();return}const r=tf.toasts(this.state),s=tf.toastIndex(this.state,n),a=(d,f)=>{for(let h=d;h>=0&&h