From 2d4a0c8d09230b930ad8b98df1a5d40c36e825d0 Mon Sep 17 00:00:00 2001 From: shanchunhua Date: Thu, 5 Nov 2026 17:09:46 +0800 Subject: [PATCH 1/2] fix: update aio sandbox image defaults --- frontend/README.md | 8 +-- frontend/server/environments/dockerfile.py | 51 ++++++++++++++++--- frontend/server/environments/service.py | 33 ++++++++++-- frontend/server/workspace_tool.py | 6 +-- frontend/src/ui/EnvironmentCenter.tsx | 6 +-- frontend/src/ui/environmentModel.ts | 9 +++- frontend/tests/environmentCenter.test.mjs | 6 ++- .../server/environments/test_environments.py | 35 ++++++++++++- tests/frontend/server/test_workspace_tool.py | 2 +- .../{index-ChVoaita.js => index-B9g_ubeS.js} | 20 ++++---- ...B44FTCqI.js => CodeDiffEditor-BPUrKJ6m.js} | 2 +- ...dVc_.js => FileExplorerEditor-D-lC6Oju.js} | 2 +- ...zV.js => MarkdownPromptEditor-CUs3kNVJ.js} | 2 +- ....js => QuickAgentCreateDialog-CZBvCs8Q.js} | 2 +- .../{arc-DUYgxv3L.js => arc-DeFbYuch.js} | 2 +- ...hannel-XWr5Vfax.js => channel-BAGhGuH3.js} | 2 +- ...ex.es-5K3DRXJs.js => index.es-ByNWtEkt.js} | 2 +- ...n-CXVczDG1.js => jspdf.es.min-a4MI_uvb.js} | 6 +-- ...{linear-C4WHi4Wc.js => linear-C4hFTYfv.js} | 2 +- ...C4.js => abnfDiagram-N423BO3Z-nxajQOSp.js} | 2 +- ... architectureDiagram-T3A2C74G-BPhG0Knu.js} | 2 +- ...w.js => blockDiagram-VBNYF7ZC-B26WQ8_Y.js} | 2 +- ...bgK_.js => c4Diagram-5PPSVZJV-BZ5sqlk5.js} | 2 +- ...CouP3pr7.js => chunk-2GRJ4B5K-CXIyK6Ww.js} | 2 +- ...Bc2Ldmss.js => chunk-2Q5K7J3B-DH4C-i02.js} | 2 +- ...BhJaZ-HG.js => chunk-5RXB4S5H-Bft6IFfF.js} | 2 +- ...DNfd3aOY.js => chunk-5VM5RSS4-BnavvC-A.js} | 2 +- ...D8USSl9E.js => chunk-6Q2QTUOP-CDl3RgMS.js} | 2 +- ...BEGo3WhG.js => chunk-GF5L2VYU-1mO1eUv6.js} | 2 +- ...C7bZ8Tjm.js => chunk-JWPE2WC7-BFoXHueJ.js} | 2 +- ...DFLcPiK-.js => chunk-KBJHAD2P-C1wKozQ0.js} | 2 +- ...CpazveUa.js => chunk-RYQCIY6F-QicTq5BO.js} | 2 +- ...cBSitQCb.js => chunk-XXDRQBXY-CVh5qYng.js} | 2 +- .../mermaid/classDiagram-JCYQIIEL-CMTkGV9a.js | 1 - .../mermaid/classDiagram-JCYQIIEL-DViuI-RD.js | 1 + .../classDiagram-v2-OCEON4UE-CMTkGV9a.js | 1 - .../classDiagram-v2-OCEON4UE-DViuI-RD.js | 1 + ...R.js => cose-bilkent-JH36ORCC-WtgEntF_.js} | 2 +- ...OXJRtv.js => cynefin-OW5HDTMX-Cl2eQUFw.js} | 2 +- ...js => cynefinDiagram-MW4NZA55-VV9rZJ9A.js} | 2 +- ...tnWPz9T-.js => dagre-VZM6K2ZE-D2TeDXQb.js} | 2 +- ...k7raEy.js => diagram-7IWD3JNH-Dn1XJ4Yi.js} | 2 +- ...RbDypa.js => diagram-B4RE2ZJO-CgG8-MsY.js} | 2 +- ...LVnjNV.js => diagram-LBJQPF4R-CDPfYxbz.js} | 2 +- ...cGGBaQ.js => diagram-Q27KOJAE-x5BfQ5Fo.js} | 2 +- ...6LG1EZ.js => diagram-UB23O5K3-CV-AyKPn.js} | 2 +- ...4p.js => ebnfDiagram-BXEA7PRR-BfOcWVco.js} | 2 +- ...yhcn.js => erDiagram-JOGREHBK-D-Hz8jo7.js} | 2 +- ...iO.js => flowDiagram-UKHOOZJN-bmp3SmuR.js} | 2 +- ...s.js => ganttDiagram-PKOTCBZU-CEkzwDk4.js} | 2 +- ...s => gitGraphDiagram-DS77QQ5N-Df-oTzqM.js} | 2 +- ...SR.js => infoDiagram-6WML65LV-NYkaYJQZ.js} | 2 +- ...s => ishikawaDiagram-WSZJBQD7-BZMMs7M8.js} | 2 +- ...js => journeyDiagram-NVQOT4AX-DBQKhs8M.js} | 2 +- ...=> kanban-definition-27J2QSJJ-Dlz5lfYn.js} | 2 +- ...e-CVx1WIOc.js => mermaid.core-XxufBR_D.js} | 8 +-- ...> mindmap-definition-FAOFIHXS-B3_jb8EO.js} | 2 +- ...R42.js => pegDiagram-VL7TDLO6-CMUSG0b3.js} | 2 +- ...YBM.js => pieDiagram-7S7Q4E2Y-Ci2lSTzO.js} | 2 +- ...s => quadrantDiagram-CIZ2JOQS-sa-J2Zb6.js} | 2 +- ...s => railroadDiagram-AXF67PYL-DXpLbFHq.js} | 2 +- ...> requirementDiagram-LRYGKXZP-BfHF15IT.js} | 2 +- ....js => sankeyDiagram-W5VNT64P-BK80VtrP.js} | 2 +- ...s => sequenceDiagram-SI44F4Z6-DHsyXKlu.js} | 2 +- ...Br.js => sizeCapture-X5ZJPWSS-Bgtp6tuM.js} | 2 +- ...C.js => stateDiagram-OKZ733FA-CPea9fL3.js} | 2 +- .../stateDiagram-v2-UEYNNEHI-DHX-iWYb.js | 1 - .../stateDiagram-v2-UEYNNEHI-YCiUjQYa.js | 1 + ...EuVH.js => swimlanes-SLNWSIFB-B7ueMmyh.js} | 4 +- .../swimlanesDiagram-ULZ7WXOC-3TXS3ras.js | 8 --- .../swimlanesDiagram-ULZ7WXOC-DYpJDMPU.js | 8 +++ ... timeline-definition-Z64GVDOM-jlnK6Kw6.js} | 2 +- ...1z.js => vennDiagram-T6HMQDX7-Ds8KuEzy.js} | 2 +- ...js => wardleyDiagram-T6FBY63Y-zASXy-Qy.js} | 2 +- ...js => xychartDiagram-ELKLHX3M-BYfdo7YN.js} | 2 +- veadk/webui/index.html | 2 +- 76 files changed, 214 insertions(+), 112 deletions(-) rename veadk/webui/assets/app/{index-ChVoaita.js => index-B9g_ubeS.js} (98%) rename veadk/webui/assets/chunks/{CodeDiffEditor-B44FTCqI.js => CodeDiffEditor-BPUrKJ6m.js} (99%) rename veadk/webui/assets/chunks/{FileExplorerEditor-DfXcdVc_.js => FileExplorerEditor-D-lC6Oju.js} (96%) rename veadk/webui/assets/chunks/{MarkdownPromptEditor-DT7EN2zV.js => MarkdownPromptEditor-CUs3kNVJ.js} (99%) rename veadk/webui/assets/chunks/{QuickAgentCreateDialog-DOAkxXHW.js => QuickAgentCreateDialog-CZBvCs8Q.js} (97%) rename veadk/webui/assets/chunks/{arc-DUYgxv3L.js => arc-DeFbYuch.js} (98%) rename veadk/webui/assets/chunks/{channel-XWr5Vfax.js => channel-BAGhGuH3.js} (53%) rename veadk/webui/assets/chunks/{index.es-5K3DRXJs.js => index.es-ByNWtEkt.js} (99%) rename veadk/webui/assets/chunks/{jspdf.es.min-CXVczDG1.js => jspdf.es.min-a4MI_uvb.js} (99%) rename veadk/webui/assets/chunks/{linear-C4WHi4Wc.js => linear-C4hFTYfv.js} (98%) rename veadk/webui/assets/visualizations/mermaid/{abnfDiagram-N423BO3Z-BWEByLC4.js => abnfDiagram-N423BO3Z-nxajQOSp.js} (86%) rename veadk/webui/assets/visualizations/mermaid/{architectureDiagram-T3A2C74G-CeajCikM.js => architectureDiagram-T3A2C74G-BPhG0Knu.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{blockDiagram-VBNYF7ZC-DXqzvNpw.js => blockDiagram-VBNYF7ZC-B26WQ8_Y.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{c4Diagram-5PPSVZJV-D7swbgK_.js => c4Diagram-5PPSVZJV-BZ5sqlk5.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{chunk-2GRJ4B5K-CouP3pr7.js => chunk-2GRJ4B5K-CXIyK6Ww.js} (93%) rename veadk/webui/assets/visualizations/mermaid/{chunk-2Q5K7J3B-Bc2Ldmss.js => chunk-2Q5K7J3B-DH4C-i02.js} (66%) rename veadk/webui/assets/visualizations/mermaid/{chunk-5RXB4S5H-BhJaZ-HG.js => chunk-5RXB4S5H-Bft6IFfF.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{chunk-5VM5RSS4-DNfd3aOY.js => chunk-5VM5RSS4-BnavvC-A.js} (83%) rename veadk/webui/assets/visualizations/mermaid/{chunk-6Q2QTUOP-D8USSl9E.js => chunk-6Q2QTUOP-CDl3RgMS.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{chunk-GF5L2VYU-BEGo3WhG.js => chunk-GF5L2VYU-1mO1eUv6.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{chunk-JWPE2WC7-C7bZ8Tjm.js => chunk-JWPE2WC7-BFoXHueJ.js} (78%) rename veadk/webui/assets/visualizations/mermaid/{chunk-KBJHAD2P-DFLcPiK-.js => chunk-KBJHAD2P-C1wKozQ0.js} (87%) rename veadk/webui/assets/visualizations/mermaid/{chunk-RYQCIY6F-CpazveUa.js => chunk-RYQCIY6F-QicTq5BO.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{chunk-XXDRQBXY-cBSitQCb.js => chunk-XXDRQBXY-CVh5qYng.js} (53%) delete mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-JCYQIIEL-CMTkGV9a.js create mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-JCYQIIEL-DViuI-RD.js delete mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-v2-OCEON4UE-CMTkGV9a.js create mode 100644 veadk/webui/assets/visualizations/mermaid/classDiagram-v2-OCEON4UE-DViuI-RD.js rename veadk/webui/assets/visualizations/mermaid/{cose-bilkent-JH36ORCC-D41A5_VR.js => cose-bilkent-JH36ORCC-WtgEntF_.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{cynefin-OW5HDTMX-DMOXJRtv.js => cynefin-OW5HDTMX-Cl2eQUFw.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{cynefinDiagram-MW4NZA55-DiDTqHii.js => cynefinDiagram-MW4NZA55-VV9rZJ9A.js} (98%) rename veadk/webui/assets/visualizations/mermaid/{dagre-VZM6K2ZE-tnWPz9T-.js => dagre-VZM6K2ZE-D2TeDXQb.js} (97%) rename veadk/webui/assets/visualizations/mermaid/{diagram-7IWD3JNH-C0k7raEy.js => diagram-7IWD3JNH-Dn1XJ4Yi.js} (96%) rename veadk/webui/assets/visualizations/mermaid/{diagram-B4RE2ZJO-DgRbDypa.js => diagram-B4RE2ZJO-CgG8-MsY.js} (97%) rename veadk/webui/assets/visualizations/mermaid/{diagram-LBJQPF4R-8nLVnjNV.js => diagram-LBJQPF4R-CDPfYxbz.js} (94%) rename veadk/webui/assets/visualizations/mermaid/{diagram-Q27KOJAE-DCcGGBaQ.js => diagram-Q27KOJAE-x5BfQ5Fo.js} (98%) rename veadk/webui/assets/visualizations/mermaid/{diagram-UB23O5K3-Rt6LG1EZ.js => diagram-UB23O5K3-CV-AyKPn.js} (95%) rename veadk/webui/assets/visualizations/mermaid/{ebnfDiagram-BXEA7PRR-S5bIAM4p.js => ebnfDiagram-BXEA7PRR-BfOcWVco.js} (87%) rename veadk/webui/assets/visualizations/mermaid/{erDiagram-JOGREHBK-Domkyhcn.js => erDiagram-JOGREHBK-D-Hz8jo7.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{flowDiagram-UKHOOZJN-BXPWvHiO.js => flowDiagram-UKHOOZJN-bmp3SmuR.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{ganttDiagram-PKOTCBZU-BxaTas3s.js => ganttDiagram-PKOTCBZU-CEkzwDk4.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{gitGraphDiagram-DS77QQ5N-CXxZKxT7.js => gitGraphDiagram-DS77QQ5N-Df-oTzqM.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{infoDiagram-6WML65LV-DdCQNDSR.js => infoDiagram-6WML65LV-NYkaYJQZ.js} (69%) rename veadk/webui/assets/visualizations/mermaid/{ishikawaDiagram-WSZJBQD7-DwudZIls.js => ishikawaDiagram-WSZJBQD7-BZMMs7M8.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{journeyDiagram-NVQOT4AX-BTPINIEi.js => journeyDiagram-NVQOT4AX-DBQKhs8M.js} (98%) rename veadk/webui/assets/visualizations/mermaid/{kanban-definition-27J2QSJJ-Cy7-_89m.js => kanban-definition-27J2QSJJ-Dlz5lfYn.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{mermaid.core-CVx1WIOc.js => mermaid.core-XxufBR_D.js} (98%) rename veadk/webui/assets/visualizations/mermaid/{mindmap-definition-FAOFIHXS-BKl_AX1m.js => mindmap-definition-FAOFIHXS-B3_jb8EO.js} (98%) rename veadk/webui/assets/visualizations/mermaid/{pegDiagram-VL7TDLO6-4Gkc4R42.js => pegDiagram-VL7TDLO6-CMUSG0b3.js} (87%) rename veadk/webui/assets/visualizations/mermaid/{pieDiagram-7S7Q4E2Y-BIavpYBM.js => pieDiagram-7S7Q4E2Y-Ci2lSTzO.js} (96%) rename veadk/webui/assets/visualizations/mermaid/{quadrantDiagram-CIZ2JOQS-BblU_vE-.js => quadrantDiagram-CIZ2JOQS-sa-J2Zb6.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{railroadDiagram-AXF67PYL-Bo-GseYw.js => railroadDiagram-AXF67PYL-DXpLbFHq.js} (84%) rename veadk/webui/assets/visualizations/mermaid/{requirementDiagram-LRYGKXZP-DPDSprik.js => requirementDiagram-LRYGKXZP-BfHF15IT.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{sankeyDiagram-W5VNT64P-B-vNmRp7.js => sankeyDiagram-W5VNT64P-BK80VtrP.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{sequenceDiagram-SI44F4Z6-CUhzPXHG.js => sequenceDiagram-SI44F4Z6-DHsyXKlu.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{sizeCapture-X5ZJPWSS-o2shDSBr.js => sizeCapture-X5ZJPWSS-Bgtp6tuM.js} (87%) rename veadk/webui/assets/visualizations/mermaid/{stateDiagram-OKZ733FA-BsTS2zjC.js => stateDiagram-OKZ733FA-CPea9fL3.js} (96%) delete mode 100644 veadk/webui/assets/visualizations/mermaid/stateDiagram-v2-UEYNNEHI-DHX-iWYb.js create mode 100644 veadk/webui/assets/visualizations/mermaid/stateDiagram-v2-UEYNNEHI-YCiUjQYa.js rename veadk/webui/assets/visualizations/mermaid/{swimlanes-SLNWSIFB-C2YkEuVH.js => swimlanes-SLNWSIFB-B7ueMmyh.js} (99%) delete mode 100644 veadk/webui/assets/visualizations/mermaid/swimlanesDiagram-ULZ7WXOC-3TXS3ras.js create mode 100644 veadk/webui/assets/visualizations/mermaid/swimlanesDiagram-ULZ7WXOC-DYpJDMPU.js rename veadk/webui/assets/visualizations/mermaid/{timeline-definition-Z64GVDOM-ClCRp9Wo.js => timeline-definition-Z64GVDOM-jlnK6Kw6.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{vennDiagram-T6HMQDX7-DxSmV21z.js => vennDiagram-T6HMQDX7-Ds8KuEzy.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{wardleyDiagram-T6FBY63Y-C8OmNYib.js => wardleyDiagram-T6FBY63Y-zASXy-Qy.js} (99%) rename veadk/webui/assets/visualizations/mermaid/{xychartDiagram-ELKLHX3M-C6mutHOy.js => xychartDiagram-ELKLHX3M-BYfdo7YN.js} (99%) diff --git a/frontend/README.md b/frontend/README.md index 6b006fd88..da87d3120 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1538,13 +1538,13 @@ agent terminology rather than exposing these control-plane resource types. `StudioEnv`,火山引擎继续使用 `Private`。创建时获取模型凭据并配置模型名称、 地址、API Key、鉴权和快照;已有工作区绑定保持不变。 -按云环境和地域选择 `studio-sandbox-1.0.1` 镜像: +按云环境和地域选择 `all-in-one-1.0.2` 镜像: | 云环境 | 地域 | 镜像 | | --- | --- | --- | -| 火山引擎 | cn-beijing | `enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1` | -| 火山引擎 | cn-shanghai | `enterprise-cn-shanghai-cn-shanghai.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1` | -| BytePlus | ap-southeast-1 | `enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1` | +| 火山引擎 | cn-beijing | `enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2` | +| 火山引擎 | cn-shanghai | `enterprise-cn-shanghai-cn-shanghai.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2` | +| BytePlus | ap-southeast-1 | `enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2` | 可通过 `STUDIO_WORKSPACE_IMAGE` 指定区域可访问的其他镜像。启动命令使用镜像内的 `/opt/gem/run.sh`,不再注入编辑器补丁。火山引擎默认中文,BytePlus 默认英文, diff --git a/frontend/server/environments/dockerfile.py b/frontend/server/environments/dockerfile.py index 438be5ddc..e49302c96 100644 --- a/frontend/server/environments/dockerfile.py +++ b/frontend/server/environments/dockerfile.py @@ -35,10 +35,21 @@ class _Package: "ubuntu-24.04": ("Ubuntu 24.04", "ubuntu:24.04"), } -AIO_BASE_IMAGE = ( - "agentkit-cli-2107625663-cn-beijing.cr.volces.com/agentkit/" - "agent-native-requirements-aio:0.2.1-20260831" -) +AIO_BASE_IMAGES = { + ( + "volcengine", + "cn-beijing", + ): "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", + ( + "volcengine", + "cn-shanghai", + ): "enterprise-cn-shanghai-cn-shanghai.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", + ( + "byteplus", + "ap-southeast-1", + ): "enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", +} +AIO_BASE_IMAGE = AIO_BASE_IMAGES[("volcengine", "cn-beijing")] _PYTHON_PATCH_VERSIONS = { "3.10": "3.10.18", @@ -198,7 +209,24 @@ def _apt_packages( return packages -def build_dockerfile(config: EnvironmentInput) -> str: +def resolve_aio_base_image(provider: str = "volcengine", region: str = "") -> str: + provider = provider.strip() or "volcengine" + region = region.strip() + if region: + image = AIO_BASE_IMAGES.get((provider, region)) + if image is not None: + return image + if provider == "byteplus": + return AIO_BASE_IMAGES[("byteplus", "ap-southeast-1")] + return AIO_BASE_IMAGES[("volcengine", "cn-beijing")] + + +def build_dockerfile( + config: EnvironmentInput, + *, + provider: str = "volcengine", + region: str = "", +) -> str: """Build the canonical Dockerfile when the user did not provide one.""" if config.dockerfile: return validate_dockerfile(config.dockerfile) @@ -221,7 +249,7 @@ def build_dockerfile(config: EnvironmentInput) -> str: ) lines = ( [ - f"ARG AIO_BASE_IMAGE={AIO_BASE_IMAGE}", + f"ARG AIO_BASE_IMAGE={resolve_aio_base_image(provider, region)}", "ARG AIO_BASE_PLATFORM=linux/amd64", "", f"# Base environment: AIO Sandbox ({os_label})", @@ -350,9 +378,14 @@ def build_dockerfile(config: EnvironmentInput) -> str: return "\n".join(lines) -def environment_base_image(config: EnvironmentInput) -> str: +def environment_base_image( + config: EnvironmentInput, + *, + provider: str = "volcengine", + region: str = "", +) -> str: if config.base_environment == "aio-sandbox": - return AIO_BASE_IMAGE + return resolve_aio_base_image(provider, region) if config.base_environment == "codex-sandbox": match = re.search( r"^\s*FROM(?:\s+--platform=\S+)?\s+(\S+)", @@ -384,8 +417,10 @@ def validate_dockerfile(value: str) -> str: __all__ = [ "AIO_BASE_IMAGE", + "AIO_BASE_IMAGES", "build_dockerfile", "environment_base_image", "environment_capabilities", + "resolve_aio_base_image", "validate_dockerfile", ] diff --git a/frontend/server/environments/service.py b/frontend/server/environments/service.py index 1aced2044..69fbd8290 100644 --- a/frontend/server/environments/service.py +++ b/frontend/server/environments/service.py @@ -303,7 +303,14 @@ async def create(self, owner_id: str, body: EnvironmentInput) -> EnvironmentView elif body.git_source is not None: body = body.model_copy(update={"dockerfile": ""}) else: - body = body.model_copy(update={"dockerfile": build_dockerfile(body)}) + provider, region = self._cloud_location() + body = body.model_copy( + update={ + "dockerfile": build_dockerfile( + body, provider=provider, region=region + ) + } + ) environment_id = uuid4().hex selected_skills = await self._persist_local_skill_assets( owner_id, environment_id, body.selected_skills @@ -386,11 +393,16 @@ async def update( ) } ) + provider, region = self._cloud_location() values["dockerfile"] = ( "" if merged_input.git_source is not None or merged_input.image_source is not None - else build_dockerfile(merged_input) + else build_dockerfile( + merged_input, + provider=provider, + region=region, + ) ) external_binding: tuple[EnvironmentResources, str] | None = None if ( @@ -653,6 +665,11 @@ async def get_manifest( skills = await repository.get_skill_manifest( owner_id, environment_id, version_id ) + base_provider, base_region = ( + (build.resources.provider, build.resources.region) + if isinstance(build.resources, EnvironmentResources) + else self._cloud_location() + ) return EnvironmentManifest( apiVersion="agentkit.studio/v3", metadata=EnvironmentManifestMetadata( @@ -664,7 +681,11 @@ async def get_manifest( spec=EnvironmentManifestSpec( image=build.image, baseEnvironment=environment.base_environment, - baseImage=environment_base_image(environment), + baseImage=environment_base_image( + environment, + provider=base_provider, + region=base_region, + ), operatingSystem=environment.operating_system, language=environment.language, executionRuntime=environment.execution_runtime, @@ -1301,6 +1322,12 @@ def _require_cloud(self) -> EnvironmentCloudGateway: ) return self._cloud + def _cloud_location(self) -> tuple[str, str]: + if self._cloud is None: + return "volcengine", "cn-beijing" + info = self._cloud.describe() + return info.provider, info.region + async def _to_thread_start( cloud: EnvironmentCloudGateway, diff --git a/frontend/server/workspace_tool.py b/frontend/server/workspace_tool.py index 7c452b3da..4dfb2bdde 100644 --- a/frontend/server/workspace_tool.py +++ b/frontend/server/workspace_tool.py @@ -30,15 +30,15 @@ ( "volcengine", "cn-beijing", - ): "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1", + ): "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", ( "volcengine", "cn-shanghai", - ): "enterprise-cn-shanghai-cn-shanghai.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1", + ): "enterprise-cn-shanghai-cn-shanghai.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", ( "byteplus", "ap-southeast-1", - ): "enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1", + ): "enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", } diff --git a/frontend/src/ui/EnvironmentCenter.tsx b/frontend/src/ui/EnvironmentCenter.tsx index ec48b5de9..4d8f1dd7e 100644 --- a/frontend/src/ui/EnvironmentCenter.tsx +++ b/frontend/src/ui/EnvironmentCenter.tsx @@ -75,7 +75,7 @@ import { } from "../adk/client"; import { buildEnvironmentDockerfile, - AIO_BASE_IMAGE, + AIO_BASE_IMAGES, CODEX_SANDBOX_BASE_IMAGES, EMPTY_ENVIRONMENT_DRAFT, ENVIRONMENT_BASE_ENVIRONMENTS, @@ -147,7 +147,7 @@ function dockerfilePresetEnvironmentOptions(t: TFunction): Option[] { function dockerfilePresetEnvironmentFromContent(content: string): DockerfilePresetEnvironment { const baseImage = dockerfileBaseImage(content, ""); - if (baseImage === AIO_BASE_IMAGE) return "aio-sandbox"; + if (Object.values(AIO_BASE_IMAGES).includes(baseImage)) return "aio-sandbox"; if (baseImage.includes("/codexenv:")) return "codex-sandbox"; return "none"; } @@ -1566,7 +1566,7 @@ function EnvironmentEditor({ const customDockerfile = draft.dockerfile ?? generatedDockerfile; const hasDockerfilePresetEnvironment = dockerfilePresetEnvironment !== "none"; const selectedBaseImage = dockerfilePresetEnvironment === "aio-sandbox" - ? AIO_BASE_IMAGE + ? AIO_BASE_IMAGES[cloudProvider] : dockerfilePresetEnvironment === "codex-sandbox" ? CODEX_SANDBOX_BASE_IMAGES[cloudProvider] : ""; diff --git a/frontend/src/ui/environmentModel.ts b/frontend/src/ui/environmentModel.ts index 87af32dc9..f8facc61c 100644 --- a/frontend/src/ui/environmentModel.ts +++ b/frontend/src/ui/environmentModel.ts @@ -84,7 +84,12 @@ export const ENVIRONMENT_BASE_ENVIRONMENTS: ReadonlyArray<{ }, ]; -export const AIO_BASE_IMAGE = "agentkit-cli-2107625663-cn-beijing.cr.volces.com/agentkit/agent-native-requirements-aio:0.2.1-20260831"; +export const AIO_BASE_IMAGES: Record = { + volcengine: "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", + byteplus: "enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", +}; + +export const AIO_BASE_IMAGE = AIO_BASE_IMAGES.volcengine; export const CODEX_SANDBOX_BASE_IMAGES: Record = { volcengine: "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/codexenv:1.1.0", @@ -335,7 +340,7 @@ export function buildEnvironmentDockerfile( ); const lines = usesAioPython ? [ - `ARG AIO_BASE_IMAGE=${AIO_BASE_IMAGE}`, + `ARG AIO_BASE_IMAGE=${AIO_BASE_IMAGES[cloudProvider]}`, "ARG AIO_BASE_PLATFORM=linux/amd64", "", `# Base environment: AIO Sandbox (${operatingSystem.label})`, diff --git a/frontend/tests/environmentCenter.test.mjs b/frontend/tests/environmentCenter.test.mjs index 863467440..0cf955254 100644 --- a/frontend/tests/environmentCenter.test.mjs +++ b/frontend/tests/environmentCenter.test.mjs @@ -544,7 +544,11 @@ test("uses AIO Sandbox as the default base environment and preserves its runtime const model = await server.ssrLoadModule("/src/ui/environmentModel.ts"); assert.equal(model.EMPTY_ENVIRONMENT_DRAFT.baseEnvironment, "aio-sandbox"); const dockerfile = model.buildEnvironmentDockerfile(model.EMPTY_ENVIRONMENT_DRAFT); - assert.match(dockerfile, /^ARG AIO_BASE_IMAGE=agentkit-cli-2107625663-cn-beijing\.cr\.volces\.com\/agentkit\/agent-native-requirements-aio:0\.2\.1-20260831$/m); + assert.match(dockerfile, /^ARG AIO_BASE_IMAGE=enterprise-public-cn-beijing\.cr\.volces\.com\/vefaas-public\/agentkit-sandbox:all-in-one-1\.0\.2$/m); + assert.match( + model.buildEnvironmentDockerfile(model.EMPTY_ENVIRONMENT_DRAFT, "byteplus"), + /^ARG AIO_BASE_IMAGE=enterprise-public-ap-southeast-1\.cr\.volces\.com\/vefaas-public\/agentkit-sandbox:all-in-one-1\.0\.2$/m, + ); assert.match(dockerfile, /^FROM --platform=\$\{AIO_BASE_PLATFORM\} \$\{AIO_BASE_IMAGE\}$/m); assert.match(dockerfile, /BASH_VENV_PATH=\/opt\/veadk-environment\/\.venv/); assert.match(dockerfile, /^EXPOSE 8080$/m); diff --git a/tests/frontend/server/environments/test_environments.py b/tests/frontend/server/environments/test_environments.py index ac4598c45..54b00f2a8 100644 --- a/tests/frontend/server/environments/test_environments.py +++ b/tests/frontend/server/environments/test_environments.py @@ -454,8 +454,8 @@ def test_aio_environment_preserves_the_shell_runtime_contract(): assert config.language == "python-3.12" assert ( "ARG AIO_BASE_IMAGE=" - "agentkit-cli-2107625663-cn-beijing.cr.volces.com/agentkit/" - "agent-native-requirements-aio:0.2.1-20260831" + "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/" + "agentkit-sandbox:all-in-one-1.0.2" ) in dockerfile assert "FROM --platform=${AIO_BASE_PLATFORM} ${AIO_BASE_IMAGE}" in dockerfile assert "BASH_VENV_PATH=/opt/veadk-environment/.venv" in dockerfile @@ -464,6 +464,37 @@ def test_aio_environment_preserves_the_shell_runtime_contract(): assert "ENTRYPOINT " not in dockerfile +@pytest.mark.parametrize( + "provider,region,expected", + [ + ( + "volcengine", + "cn-beijing", + "enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", + ), + ( + "volcengine", + "cn-shanghai", + "enterprise-cn-shanghai-cn-shanghai.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", + ), + ( + "byteplus", + "ap-southeast-1", + "enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2", + ), + ], +) +def test_aio_environment_base_image_matches_provider_region(provider, region, expected): + from frontend.server.environments.dockerfile import resolve_aio_base_image + + config = EnvironmentInput.model_validate(_payload(baseEnvironment="aio-sandbox")) + + assert resolve_aio_base_image(provider, region) == expected + assert f"ARG AIO_BASE_IMAGE={expected}" in build_dockerfile( + config, provider=provider, region=region + ) + + @pytest.mark.parametrize("operating_system", ["ubuntu-22.04", "ubuntu-24.04"]) @pytest.mark.parametrize("language", ["python-3.10", "python-3.12"]) def test_all_os_language_combinations_generate_buildable_commented_dockerfiles( diff --git a/tests/frontend/server/test_workspace_tool.py b/tests/frontend/server/test_workspace_tool.py index 30f8340ea..e625b942a 100644 --- a/tests/frontend/server/test_workspace_tool.py +++ b/tests/frontend/server/test_workspace_tool.py @@ -64,7 +64,7 @@ def test_workspace_image_matches_deployment_region( monkeypatch.delenv("STUDIO_WORKSPACE_IMAGE", raising=False) assert resolve_workspace_image(provider, region) == ( - f"{registry}.cr.volces.com/vefaas-public/agentkit-sandbox:studio-sandbox-1.0.1" + f"{registry}.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2" ) diff --git a/veadk/webui/assets/app/index-ChVoaita.js b/veadk/webui/assets/app/index-B9g_ubeS.js similarity index 98% rename from veadk/webui/assets/app/index-ChVoaita.js rename to veadk/webui/assets/app/index-B9g_ubeS.js index adde06b9e..2a7672288 100644 --- a/veadk/webui/assets/app/index-ChVoaita.js +++ b/veadk/webui/assets/app/index-B9g_ubeS.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visualizations/mermaid/mermaid.core-CVx1WIOc.js","assets/chunks/purify.es-BnINGy_Y.js","assets/chunks/MarkdownPromptEditor-DT7EN2zV.js","assets/styles/MarkdownPromptEditor-ZH9qtki0.css","assets/chunks/QuickAgentCreateDialog-DOAkxXHW.js","assets/styles/QuickAgentCreateDialog-DGsLIlOX.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/visualizations/mermaid/mermaid.core-XxufBR_D.js","assets/chunks/purify.es-BnINGy_Y.js","assets/chunks/MarkdownPromptEditor-CUs3kNVJ.js","assets/styles/MarkdownPromptEditor-ZH9qtki0.css","assets/chunks/QuickAgentCreateDialog-CZBvCs8Q.js","assets/styles/QuickAgentCreateDialog-DGsLIlOX.css"])))=>i.map(i=>d[i]); var xWe=Object.defineProperty;var eX=e=>{throw TypeError(e)};var wWe=(e,t,n)=>t in e?xWe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var en=(e,t,n)=>wWe(e,typeof t!="symbol"?t+"":t,n),tX=(e,t,n)=>t.has(e)||eX("Cannot "+n);var Al=(e,t,n)=>(tX(e,t,"read from private field"),n?n.call(e):t.get(e)),nX=(e,t,n)=>t.has(e)?eX("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),M5=(e,t,n,i)=>(tX(e,t,"write to private field"),i?i.call(e,n):t.set(e,n),n);function kWe(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 o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).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 bg=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function F1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var rde={exports:{}},cD={};/** * @license React * react-jsx-runtime.production.js @@ -523,7 +523,7 @@ data: ${JSON.stringify({...n,...r?{id:r}:{},...o?{snapshot:!0}:{}})}`)}(t.type== "peer": {"enabled": true}, "working_memory": {"enabled": true}, "memory_types": null -}`,Qyt=[{key:"DATABASE_VIKING_PROJECT",required:!1,placeholder:"default"},{key:"DATABASE_VIKING_REGION",required:!1},{key:"DATABASE_VIKING_COLLECTION_KIND",required:!1},{key:"DATABASE_VIKING_RESOURCE_ID",required:!1}],zyt=[Ed({key:"DATABASE_VIKINGMEM_PROJECT",required:!1,placeholder:"default",hidden:!0},{comment:"traditional.catalog.env.vikingMemoryProject.comment"}),Ed({key:"DATABASE_VIKING_REGION",required:!1,hidden:!0},{comment:"traditional.catalog.env.vikingMemoryRegion.comment"}),Ed({key:"DATABASE_VIKINGMEM_MEMORY_TYPE",required:!1,placeholder:"sys_event_v1,sys_profile_v1",hidden:!0},{comment:"traditional.catalog.env.vikingMemoryType.comment"})],xO=[Ed({key:"FEISHU_APP_ID",required:!0,placeholder:"cli_xxx"},{comment:"traditional.catalog.env.feishuAppId.comment"}),Ed({key:"FEISHU_APP_SECRET",required:!0,secret:!0},{placeholder:"traditional.catalog.env.feishuAppSecret.placeholder",comment:"traditional.catalog.env.feishuAppSecret.comment"})],bw={topK:"3",region:"cn-beijing",endpoint:"https://open.volcengineapi.com/"};function jM(e){if(e==="byteplus"){const t="ap-southeast-1";return{topK:bw.topK,region:t,endpoint:`https://agentkit.${t}.byteplusapi.com/`}}return bw}const fLe=[Ed({key:"REGISTRY_SPACE_ID",required:!0},{placeholder:"traditional.catalog.env.registrySpaceId.placeholder",comment:"traditional.catalog.env.registrySpaceId.comment"}),Ed({key:"REGISTRY_TOP_K",required:!1,placeholder:bw.topK},{comment:"traditional.catalog.env.registryTopK.comment"}),Ed({key:"REGISTRY_REGION",required:!1,placeholder:bw.region},{comment:"traditional.catalog.env.registryRegion.comment"}),Ed({key:"REGISTRY_ENDPOINT",required:!1,placeholder:bw.endpoint},{comment:"traditional.catalog.env.registryEndpoint.comment"})],mT=pT([{id:"web_search",importLine:"from veadk.tools.builtin_tools.web_search import web_search",toolNames:["web_search"],env:jI},{id:"parallel_web_search",importLine:"from veadk.tools.builtin_tools.parallel_web_search import parallel_web_search",toolNames:["parallel_web_search"],env:jI},{id:"link_reader",importLine:"from veadk.tools.builtin_tools.link_reader import link_reader",toolNames:["link_reader"],env:[]},{id:"web_scraper",importLine:"from veadk.tools.builtin_tools.web_scraper import web_scraper",toolNames:["web_scraper"],env:[{key:"TOOL_WEB_SCRAPER_ENDPOINT",required:!0},{key:"TOOL_WEB_SCRAPER_API_KEY",required:!0}]},{id:"image_generate",importLine:"from veadk.tools.builtin_tools.image_generate import image_generate",toolNames:["image_generate"],env:[{key:"MODEL_IMAGE_NAME",required:!1,placeholder:"doubao-seedream-5-0-260128"}]},{id:"image_edit",importLine:"from veadk.tools.builtin_tools.image_edit import image_edit",toolNames:["image_edit"],env:[{key:"MODEL_EDIT_NAME",required:!1,placeholder:"doubao-seededit-3-0-i2i-250628"}]},{id:"video_generate",importLine:"from veadk.tools.builtin_tools.video_generate import video_generate, video_task_query",toolNames:["video_generate","video_task_query"],env:[{key:"MODEL_VIDEO_NAME",required:!1,placeholder:"doubao-seedance-2-0-260128"}]},{id:"text_to_speech",importLine:"from veadk.tools.builtin_tools.tts import text_to_speech",toolNames:["text_to_speech"],env:[{key:"TOOL_VESPEECH_APP_ID",required:!0},{key:"TOOL_VESPEECH_SPEAKER",required:!1,placeholder:"zh_female_vv_uranus_bigtts"}]},{id:"run_code",importLine:"from veadk.tools.builtin_tools.run_code import run_code",toolNames:["run_code"],env:[{key:"AGENTKIT_TOOL_ID",required:!0,placeholder:"t-xxxx",get comment(){return Jt("traditional.catalog.env.agentKitToolId.comment")}},{key:"AGENTKIT_TOOL_REGION",required:!1,placeholder:"cn-beijing",get comment(){return Jt("traditional.catalog.env.agentKitToolRegion.comment")}}]},{id:"vesearch",importLine:"from veadk.tools.builtin_tools.vesearch import vesearch",toolNames:["vesearch"],env:[{key:"TOOL_VESEARCH_ENDPOINT",required:!0,comment:"VeSearch bot_id"}]}],"traditional.catalog"),Vyt=new Set(["web_scraper","text_to_speech","vesearch"]),Hyt=new Set(["web_search","parallel_web_search"]),qyt=mT.filter(e=>!Vyt.has(e.id));function hLe(e="volcengine"){const t=e==="byteplus"?Hyt:new Set;return qyt.filter(n=>!t.has(n.id))}const yw=pT([{id:"local",env:[]},{id:"sqlite",extraArgs:'local_database_path="./short_term_memory.db"',env:[]},{id:"mysql",env:[{key:"DATABASE_MYSQL_HOST",required:!0},{key:"DATABASE_MYSQL_USER",required:!0},{key:"DATABASE_MYSQL_PASSWORD",required:!0},{key:"DATABASE_MYSQL_DATABASE",required:!0}]},{id:"postgresql",env:[{key:"DATABASE_POSTGRESQL_HOST",required:!0},{key:"DATABASE_POSTGRESQL_PORT",required:!1,placeholder:"5432"},{key:"DATABASE_POSTGRESQL_USER",required:!0},{key:"DATABASE_POSTGRESQL_PASSWORD",required:!0},{key:"DATABASE_POSTGRESQL_DATABASE",required:!0}]}],"traditional.backends.shortTerm"),HB=pT([{id:"local",env:$N,pipExtra:"extensions",needsEmbedding:!0},{id:"opensearch",env:[{key:"DATABASE_OPENSEARCH_HOST",required:!0},{key:"DATABASE_OPENSEARCH_PORT",required:!1,placeholder:"9200"},{key:"DATABASE_OPENSEARCH_USERNAME",required:!0},{key:"DATABASE_OPENSEARCH_PASSWORD",required:!0},...$N],pipExtra:"extensions",needsEmbedding:!0},{id:"redis",env:[{key:"DATABASE_REDIS_HOST",required:!0},{key:"DATABASE_REDIS_PORT",required:!1,placeholder:"6379"},{key:"DATABASE_REDIS_PASSWORD",required:!1},...$N],pipExtra:"extensions",needsEmbedding:!0},{id:"viking",env:zyt},{id:"openviking",env:[{key:"DATABASE_OPENVIKING_URL",required:!0,placeholder:dLe,get comment(){return Jt("traditional.catalog.env.openVikingUrl.comment")},link:NI},{key:"DATABASE_OPENVIKING_API_KEY",required:!0,comment:"OpenViking API Key",link:NI},{key:"DATABASE_OPENVIKING_USER_ID",required:!1,placeholder:"default",get comment(){return Jt("traditional.catalog.env.openVikingMemoryUserId.comment")},get help(){return Jt("traditional.catalog.env.openVikingMemoryUserId.help")}},{key:"DATABASE_OPENVIKING_MEMORY_POLICY",required:!1,placeholder:Uyt,get comment(){return Jt("traditional.catalog.env.openVikingMemoryPolicy.comment")},multiline:!0,format:"json",get help(){return Jt("traditional.catalog.env.openVikingMemoryPolicy.help")},link:Byt}]},{id:"mem0",env:[{key:"DATABASE_MEM0_API_KEY",required:!0},{key:"DATABASE_MEM0_BASE_URL",required:!1}],pipExtra:"database"}],"traditional.backends.longTerm"),zg="viking",qB=pT([{id:"viking",env:Qyt},{id:"opensearch",env:[{key:"DATABASE_OPENSEARCH_HOST",required:!0},{key:"DATABASE_OPENSEARCH_PORT",required:!1,placeholder:"9200"},{key:"DATABASE_OPENSEARCH_USERNAME",required:!0},{key:"DATABASE_OPENSEARCH_PASSWORD",required:!0},...$N],pipExtra:"extensions",needsEmbedding:!0},{id:"context_search",env:[...jI,{key:"DATABASE_CONTEXT_SEARCH_ENGINE_ID",required:!0},{key:"DATABASE_CONTEXT_SEARCH_ENGINE_ENDPOINT",required:!0},{key:"DATABASE_CONTEXT_SEARCH_ENGINE_APIKEY",required:!0}]},{id:"openviking",env:[{key:"DATABASE_OPENVIKING_URL",required:!0,placeholder:dLe,get comment(){return Jt("traditional.catalog.env.openVikingUrl.comment")},link:NI},{key:"DATABASE_OPENVIKING_API_KEY",required:!0,comment:"OpenViking API Key",link:NI},{key:"DATABASE_OPENVIKING_USER_ID",required:!1,placeholder:"default",get comment(){return Jt("traditional.catalog.env.openVikingKnowledgeUserId.comment")},get help(){return Jt("traditional.catalog.env.openVikingKnowledgeUserId.help")}},{key:"DATABASE_OPENVIKING_TARGET_URI",required:!1,placeholder:"viking://user/default/resources//",get comment(){return Jt("traditional.catalog.env.openVikingTargetUri.comment")},get help(){return Jt("traditional.catalog.env.openVikingTargetUri.help")}}]}],"traditional.backends.knowledge"),Wyt=pT([{id:"apmplus",enableFlag:"ENABLE_APMPLUS",env:[{key:"OBSERVABILITY_OPENTELEMETRY_APMPLUS_SERVICE_NAME",required:!1}]},{id:"cozeloop",enableFlag:"ENABLE_COZELOOP",env:[{key:"OBSERVABILITY_OPENTELEMETRY_COZELOOP_API_KEY",required:!0},{key:"OBSERVABILITY_OPENTELEMETRY_COZELOOP_SERVICE_NAME",required:!1,comment:"CozeLoop space_id"}]},{id:"tls",enableFlag:"ENABLE_TLS",env:[...jI,Ed({key:"OBSERVABILITY_OPENTELEMETRY_TLS_SERVICE_NAME",required:!1},{comment:"traditional.catalog.env.tlsServiceName.comment"})]}],"traditional.exporters");function Pd(e="volcengine"){return{name:"",description:Jt("defaults.description"),instruction:Jt("defaults.instruction"),dynamicAgentDelegation:!1,agentType:"llm",cloudProvider:e,maxIterations:3,a2aUrl:"",tools:[],skills:[],memory:{shortTerm:!1,longTerm:!1},knowledgebase:!1,tracing:!1,subAgents:[],builtinTools:[],customTools:[],mcpTools:[],a2aRegistry:{enabled:!1,registrySpaceId:"",registryTopK:"",registryRegion:"",registryEndpoint:""},modelName:nm(e),modelFallbacks:[],modelSource:"ark",modelProvider:"",modelApiBase:"",shortTermBackend:"local",longTermBackend:"local",longTermMemoryIndex:"",autoSaveSession:!1,knowledgebaseBackend:zg,knowledgebaseIndex:"",tracingExporters:[],selectedSkills:[],cloudEnvironment:{environmentId:"",environmentVersionId:""},deployment:{feishuEnabled:!1,modelApiKeyId:"",modelApiKeyName:""}}}function kS(e){return{id:e,get displayName(){return Jt(`traditional.optimization.options.${e}.label`)},get description(){return Jt(`traditional.optimization.options.${e}.description`)}}}const EH=[kS("context_engine"),kS("compressor"),kS("verifier"),kS("long_run_control"),kS("mcp_resilience")],Kyt=[{id:"quality",get displayName(){return Jt("traditional.optimization.groups.quality")},componentIds:["context_engine","verifier"]},{id:"cost",get displayName(){return Jt("traditional.optimization.groups.cost")},componentIds:["compressor"]},{id:"stability",get displayName(){return Jt("traditional.optimization.groups.stability")},componentIds:["long_run_control","mcp_resilience"]}],ck=EH.map(e=>e.id);function Gyt(e){return e==="byteplus"?Jt("traditional.optimization.bytePlusUnavailable"):null}const pLe=["context_engine","compressor","verifier","long_run_control"],Xyt=new Set(["1","true","yes","on"]),CH=[{id:"default",get displayName(){return Jt("traditional.optimization.profiles.default.label")},get description(){return Jt("traditional.optimization.profiles.default.description")},defaultComponents:[],autoAddedComponents:[]},{id:"ops",get displayName(){return Jt("traditional.optimization.profiles.ops.label")},get description(){return Jt("traditional.optimization.profiles.ops.description")},defaultComponents:["context_engine","verifier","long_run_control","mcp_resilience"],autoAddedComponents:["sql_readonly"]}];function FN(e){var t;return((t=EH.find(n=>n.id===e))==null?void 0:t.displayName)??e}function Yyt(e){var t;return((t=CH.find(n=>n.id===e))==null?void 0:t.displayName)??e}function AH(e){const t=CH.find(n=>n.id===e);return t?[...t.defaultComponents]:[]}function qy(e,t="default"){const n=new Set(e);return{enabled:n.size>0,profile:t,componentOverrides:Object.fromEntries(ck.map(r=>[r,n.has(r)]))}}function TH(e){if(!e)return;const t=e.profile==="ops"?"ops":"default",n=t==="ops"?AH(t):ck.filter(i=>{var r;return((r=e.componentOverrides)==null?void 0:r[i])===!0});return{...qy(n,t),...e.catalogVersion?{catalogVersion:e.catalogVersion}:{},...e.planHash?{planHash:e.planHash}:{}}}function x4(e){return Xyt.has((e==null?void 0:e.trim().toLowerCase())??"")}function Zyt(e){if(!e)return null;try{const t=JSON.parse(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function Jyt(e){var o;const t=new Map((e==null?void 0:e.map(({key:l,value:c})=>[l,c]))??[]),n=t.get("HARNESS_SIDECAR_ENABLED");if(n===void 0)return null;const i=((o=t.get("HARNESS_PROFILE"))==null?void 0:o.trim())==="ops"?"ops":"default";if(!x4(n))return qy([],i);const r=Zyt(t.get("HARNESS_SIDECAR_COMPONENT_OVERRIDES"));if(r){const l={...qy(ck.filter(c=>r[c]===!0),i),enabled:!0};return i==="ops"?TH(l)??l:l}if(i==="ops")return qy(AH(i),i);const s=[...x4(t.get("HARNESS_MODEL_PROXY_ENABLED"))?pLe:[],...x4(t.get("HARNESS_MCP_GATEWAY_ENABLED"))?["mcp_resilience"]:[]];return{...qy(s,i),enabled:!0}}function evt(e,t){return{...e,modelName:t.modelName||e.modelName,description:t.description,instruction:t.instruction}}function tvt(e){var t;return((t=e.harnessSidecar)==null?void 0:t.profile)??"default"}function RI(e){var n;const t=(n=e.harnessSidecar)==null?void 0:n.componentOverrides;return t?ck.filter(i=>t[i]):[]}function nvt(e){const t=new Set(RI(e));return pLe.filter(n=>t.has(n))}function ivt(e,t){const n=i=>({...i,mcpTools:(i.mcpTools??[]).map(r=>{var o,l;const s=!!(r.authTokenEnv&&(t.has(r.authTokenEnv)||r.authToken));return{...r,credentialConfigured:s,...s?{credentialSourceUrl:((o=r.url)==null?void 0:o.trim())??"",credentialSourceAuthTokenEnv:((l=r.authTokenEnv)==null?void 0:l.trim())??""}:{}}}),subAgents:i.subAgents.map(n),...i.workflow?{workflow:{...i.workflow,nodes:i.workflow.nodes.map(r=>({...r,agent:n(r.agent)}))}}:{}});return n(e)}function uk(e){const t=(e==null?void 0:e.trim())??"",n=t.indexOf("/");return n<=0||n===t.length-1?{modelName:t,modelProvider:""}:{modelName:t.slice(n+1),modelProvider:t.slice(0,n)}}function _H(e){return uk(e).modelName}function mLe(e,t,n,i=!1){var c,u,d,f;const r=uk((t==null?void 0:t.model)||(n==null?void 0:n.model)),s=(t==null?void 0:t.children)??[],o=t==null?void 0:t.type,l=e.agentType==="a2a"&&((c=e.a2aRegistry)!=null&&c.enabled)&&o==="llm"?"a2a":o??e.agentType;return{...e,name:((u=t==null?void 0:t.name)==null?void 0:u.trim())||((d=n==null?void 0:n.name)==null?void 0:d.trim())||e.name,description:(t==null?void 0:t.description)??e.description,instruction:i?e.instruction:(t==null?void 0:t.instruction)??e.instruction,agentType:l,modelName:r.modelName||e.modelName,modelProvider:r.modelProvider||e.modelProvider,skills:((f=t==null?void 0:t.skills)==null?void 0:f.map(h=>h.name))??e.skills,subAgents:e.subAgents.map((h,m)=>mLe(h,s[m],void 0,i))}}function rvt(e,t){const n=new Map(t.map(({key:o,value:l})=>[o,l]));if(!["REGISTRY_SPACE_ID","REGISTRY_TOP_K","REGISTRY_REGION","REGISTRY_ENDPOINT"].some(o=>n.has(o)))return e;const r=(o,l)=>n.has(o)?n.get(o)??"":l??"",s=o=>{var l;return{...o,...(l=o.a2aRegistry)!=null&&l.enabled?{a2aRegistry:{...o.a2aRegistry,registrySpaceId:r("REGISTRY_SPACE_ID",o.a2aRegistry.registrySpaceId),registryTopK:r("REGISTRY_TOP_K",o.a2aRegistry.registryTopK),registryRegion:r("REGISTRY_REGION",o.a2aRegistry.registryRegion),registryEndpoint:r("REGISTRY_ENDPOINT",o.a2aRegistry.registryEndpoint)}}:{},subAgents:o.subAgents.map(s)}};return s(e)}function WB(e,t){var c,u,d;const n=e.cloudProvider??t,i=Pd(n),r=e.deployment,s=r==null?void 0:r.network,o=e.cloudEnvironment,l=e.a2aRegistry;return{...i,...e,name:e.name??i.name,description:e.description??i.description,instruction:e.instruction??i.instruction,agentType:e.agentType??i.agentType,cloudProvider:n,maxIterations:e.maxIterations??i.maxIterations,a2aUrl:e.a2aUrl??i.a2aUrl,model:e.model??void 0,modelSource:e.modelSource==="ark"||e.modelSource==="custom"?e.modelSource:void 0,modelName:e.modelName??i.modelName,modelProvider:e.modelProvider??i.modelProvider,modelApiBase:e.modelApiBase??i.modelApiBase,memory:{shortTerm:((c=e.memory)==null?void 0:c.shortTerm)??i.memory.shortTerm,longTerm:((u=e.memory)==null?void 0:u.longTerm)??i.memory.longTerm},tools:[...e.tools??[]],skills:[...e.skills??[]],knowledgebase:e.knowledgebase??i.knowledgebase,tracing:e.tracing??i.tracing,harnessSidecar:TH(e.harnessSidecar),subAgents:(e.subAgents??[]).map(f=>WB(f,n)),builtinTools:[...e.builtinTools??[]],customTools:[...e.customTools??[]],mcpTools:[...e.mcpTools??[]],a2aRegistry:{...i.a2aRegistry,...l??{},enabled:(l==null?void 0:l.enabled)??!1,registrySpaceId:(l==null?void 0:l.registrySpaceId)??"",registryTopK:(l==null?void 0:l.registryTopK)??"",registryRegion:(l==null?void 0:l.registryRegion)??"",registryEndpoint:(l==null?void 0:l.registryEndpoint)??""},shortTermBackend:e.shortTermBackend??i.shortTermBackend,longTermBackend:e.longTermBackend??i.longTermBackend,longTermMemoryIndex:e.longTermMemoryIndex??i.longTermMemoryIndex,autoSaveSession:e.autoSaveSession??i.autoSaveSession,knowledgebaseBackend:e.knowledgebaseBackend??i.knowledgebaseBackend,knowledgebaseIndex:e.knowledgebaseIndex??i.knowledgebaseIndex,tracingExporters:[...e.tracingExporters??[]],selectedSkills:[...e.selectedSkills??[]],cloudEnvironment:{...i.cloudEnvironment,...o??{},cliTools:[...(o==null?void 0:o.cliTools)??[]],dockerfile:typeof(o==null?void 0:o.dockerfile)=="string"?o.dockerfile:void 0},deployment:{...i.deployment,...r??{},feishuEnabled:(r==null?void 0:r.feishuEnabled)??!1,runtimeName:(r==null?void 0:r.runtimeName)??void 0,runtimeNameCustomized:(r==null?void 0:r.runtimeNameCustomized)??((d=i.deployment)==null?void 0:d.runtimeNameCustomized),network:s?{...s,vpcId:s.vpcId??"",subnetIds:s.subnetIds??"",enableSharedInternetAccess:s.enableSharedInternetAccess??!1}:void 0,modelApiKeyId:(r==null?void 0:r.modelApiKeyId)??"",modelApiKeyName:(r==null?void 0:r.modelApiKeyName)??"",envValues:(r==null?void 0:r.envValues)??void 0},...e.workflow?{workflow:{...e.workflow,nodes:e.workflow.nodes.map(f=>({...f,agent:WB(f.agent,n)}))}}:{}}}const svt=["动态子智能体协作规则:","Dynamic sub-agent collaboration rules:"],avt=["collect_resources","create_agents","handoff_to"];function ovt(e){return e.replace(/\\([\\`*_[\]{}()<>#+\-.!|])/g,"$1")}function lvt(e){const t=svt.flatMap(i=>{const r=[];let s=0;for(;si-r),n=t.find((i,r)=>{const s=t[r+1]??e.length,o=ovt(e.slice(i,s));return avt.every(l=>o.includes(l))});return n===void 0?e:e.slice(0,n).trimEnd()}function cvt(e){const t=n=>({...n,instruction:n.dynamicAgentDelegation===!0?lvt(n.instruction):n.instruction,subAgents:n.subAgents.map(t),...n.workflow?{workflow:{...n.workflow,nodes:n.workflow.nodes.map(i=>({...i,agent:t(i.agent)}))}}:{}});return t(e)}function gLe(e,t){var l,c;const n=Pd(t),i=[...e.tools??[]],r=mT.filter(u=>u.toolNames.some(d=>i.includes(d))),s=new Set(r.flatMap(u=>u.toolNames)),o=uk(e.model);return{...n,modelSource:void 0,name:((l=e.name)==null?void 0:l.trim())??"",description:e.description??"",instruction:e.instruction||n.instruction,agentType:e.type??"llm",modelName:o.modelName,modelProvider:o.modelProvider,tools:i.filter(u=>!s.has(u)),builtinTools:r.map(u=>u.id),skills:((c=e.skills)==null?void 0:c.map(u=>u.name))??[],subAgents:(e.children??[]).map(u=>gLe(u,t))}}function jH(e,t,n=[]){var l,c,u,d;const i=((l=e.draft)==null?void 0:l.cloudProvider)??t,r=uk(e.model),s=e.draft?WB(e.draft,i):e.graph?gLe(e.graph,i):{...Pd(i),modelSource:void 0,name:((c=e.name)==null?void 0:c.trim())||e.appName.trim(),description:e.description??"",instruction:e.instruction||Pd(i).instruction,agentType:e.type??"llm",modelName:r.modelName,modelProvider:r.modelProvider,tools:[...e.tools??[]],skills:((u=e.skills)==null?void 0:u.map(f=>f.name))??[]},o=e.draft&&s.dynamicAgentDelegation===!0?cvt(s):s;return ivt(mLe(o,e.graph,{name:((d=e.name)==null?void 0:d.trim())||e.appName.trim(),model:e.model},!!e.draft),new Set(n))}function uvt(e,t){const n=i=>{var s;const r=((s=i.modelName)==null?void 0:s.trim())??"";return{...i,modelSource:i.agentType==="llm"||!i.agentType?t.has(r)?"ark":"custom":i.modelSource,subAgents:i.subAgents.map(n),...i.workflow?{workflow:{...i.workflow,nodes:i.workflow.nodes.map(o=>({...o,agent:n(o.agent)}))}}:{}}};return n(e)}const II=[{id:"ubuntu-22.04",label:"Ubuntu 22.04",image:"ubuntu:22.04"},{id:"ubuntu-24.04",label:"Ubuntu 24.04",image:"ubuntu:24.04"}],bLe=[{id:"aio-sandbox",label:"AIO Sandbox",description:"内置 Sandbox Shell 能力 · Ubuntu 22.04"},{id:"codex-sandbox",label:"Codex Sandbox",description:"内置 Codex CLI、浏览器与代码执行环境"},{id:"ubuntu",label:"Ubuntu",description:"标准 Linux 基础镜像"}],NH="agentkit-cli-2107625663-cn-beijing.cr.volces.com/agentkit/agent-native-requirements-aio:0.2.1-20260831",yLe={volcengine:"enterprise-public-cn-beijing.cr.volces.com/vefaas-public/codexenv:1.1.0",byteplus:"enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/codexenv:1.1.0"},vLe=[{id:"python-3.10",label:"Python 3.10"},{id:"python-3.12",label:"Python 3.12"}],dvt={"python-3.10":"3.10.18","python-3.12":"3.12.11"},RH=[{id:"tools",label:"工具",description:"常用 CLI 与内容处理工具",options:[{id:"lark-cli",label:"lark-cli",description:"飞书开放平台命令行工具",installer:"pip",packageName:"lark-cli"},{id:"pandoc",label:"pandoc",description:"文档格式转换工具",installer:"apt",packageName:"pandoc"},{id:"opencli",label:"opencli",description:"将网站与桌面应用转换为命令行工具",installer:"npm",packageName:"@jackwener/opencli@1.8.7"}]},{id:"productivity",label:"效率",description:"加速依赖安装、检索和协作",options:[{id:"uv",label:"uv",description:"快速 Python 包与项目管理器",installer:"pip",packageName:"uv"},{id:"ripgrep",label:"ripgrep",description:"高性能文本检索工具",installer:"apt",packageName:"ripgrep"},{id:"jq",label:"jq",description:"JSON 查询与转换工具",installer:"apt",packageName:"jq"},{id:"github-cli",label:"GitHub CLI",description:"在终端中管理 GitHub 工作流",installer:"apt",packageName:"gh"}]},{id:"browser",label:"浏览器自动化",description:"网页操作、测试与内容采集",options:[{id:"playwright",label:"Playwright",description:"浏览器自动化与端到端测试",installer:"pip",packageName:"playwright"},{id:"chromium",label:"Chromium",description:"无头浏览器运行时",installer:"apt",packageName:"chromium"}]},{id:"system",label:"系统与媒体",description:"基础开发、网络和媒体处理能力",options:[{id:"git",label:"Git",description:"代码版本管理",installer:"apt",packageName:"git"},{id:"curl",label:"curl",description:"网络请求与文件下载",installer:"apt",packageName:"curl"},{id:"ffmpeg",label:"FFmpeg",description:"音视频转码与处理",installer:"apt",packageName:"ffmpeg"},{id:"imagemagick",label:"ImageMagick",description:"图片转换与批处理",installer:"apt",packageName:"imagemagick"}]}],fvt=RH.flatMap(e=>e.options),hvt=["build-essential","curl","libbz2-dev","libffi-dev","libgdbm-dev","liblzma-dev","libncursesw5-dev","libreadline-dev","libsqlite3-dev","libssl-dev","tk-dev","uuid-dev","zlib1g-dev"],pvt=["xvfb","fonts-noto-color-emoji","fonts-unifont","libfontconfig1","libfreetype6","xfonts-cyrillic","xfonts-scalable","fonts-liberation","fonts-ipafont-gothic","fonts-wqy-zenhei","fonts-tlwg-loma-otf","fonts-freefont-ttf"],mvt={"ubuntu-22.04":["libasound2","libatk-bridge2.0-0","libatk1.0-0","libatspi2.0-0","libcairo2","libcups2","libdbus-1-3","libdrm2","libgbm1","libglib2.0-0","libnspr4","libnss3","libpango-1.0-0","libwayland-client0","libx11-6","libxcb1","libxcomposite1","libxdamage1","libxext6","libxfixes3","libxkbcommon0","libxrandr2"],"ubuntu-24.04":["libasound2t64","libatk-bridge2.0-0t64","libatk1.0-0t64","libatspi2.0-0t64","libcairo2","libcups2t64","libdbus-1-3","libdrm2","libgbm1","libglib2.0-0t64","libnspr4","libnss3","libpango-1.0-0","libx11-6","libxcb1","libxcomposite1","libxdamage1","libxext6","libxfixes3","libxkbcommon0","libxrandr2"]};function SS(e,t){for(const n of t)e.includes(n)||e.push(n)}function gvt(e,t,n,i,r){const s=["ca-certificates"];r||SS(s,i?[`python${n}`,`python${n}-venv`]:hvt);for(const o of t)o.id==="playwright"||o.id==="chromium"||(o.installer==="apt"&&SS(s,[o.packageName]),o.id==="opencli"&&SS(s,["curl","xz-utils"]));return e.optionIds.some(o=>o==="playwright"||o==="chromium")&&(SS(s,pvt),SS(s,mvt[e.operatingSystem])),s}const w4={name:"",description:"",baseEnvironment:"aio-sandbox",operatingSystem:"ubuntu-22.04",language:"python-3.12",optionIds:[],selectedSkills:[]};function Vp(e){var t;return((t=vLe.find(n=>n.id===e))==null?void 0:t.label)??e}function KB(e){var t;return((t=II.find(n=>n.id===e))==null?void 0:t.label)??e}function GB(e){var t;return((t=bLe.find(n=>n.id===e))==null?void 0:t.label)??e}function bvt(e){var n;const t=((n=e.match(/^\s*FROM\s+(.+)$/im))==null?void 0:n[1])??"";return{baseEnvironment:/\/codexenv:/i.test(t)?"codex-sandbox":/aio\.sandbox/i.test(e)?"aio-sandbox":"ubuntu",operatingSystem:/ubuntu:24\.04/i.test(t)?"ubuntu-24.04":"ubuntu-22.04"}}function IH(e,t="volcengine"){const n=fvt.filter(b=>e.optionIds.includes(b.id)),i=e.baseEnvironment==="aio-sandbox",r=e.baseEnvironment==="codex-sandbox",s=i||r,o=s?"python-3.12":e.language,l=o.replace("python-",""),c=dvt[o],u=II.find(b=>b.id===e.operatingSystem)??II[0],d=e.operatingSystem==="ubuntu-22.04"&&l==="3.10"||e.operatingSystem==="ubuntu-24.04"&&l==="3.12",f=gvt(e,n,l,d,s),h=i?[`ARG AIO_BASE_IMAGE=${NH}`,"ARG AIO_BASE_PLATFORM=linux/amd64","",`# Base environment: AIO Sandbox (${u.label})`,"FROM --platform=${AIO_BASE_PLATFORM} ${AIO_BASE_IMAGE}"]:r?[`ARG CODEX_BASE_IMAGE=${yLe[t]}`,"ARG CODEX_BASE_PLATFORM=linux/amd64","","# Base environment: Codex Sandbox","FROM --platform=${CODEX_BASE_PLATFORM} ${CODEX_BASE_IMAGE}"]:[`# Operating system: ${u.label}`,`FROM ${u.image}`];h.push("","ARG DEBIAN_FRONTEND=noninteractive","ARG APT_MIRROR_URL=http://archive.ubuntu.com/ubuntu","ARG PIP_INDEX_URL=https://pypi.org/simple","ARG PYTHON_SOURCE_BASE_URL=https://www.python.org/ftp/python","ARG PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.playwright.dev","ARG PIP_DEFAULT_TIMEOUT=300","ARG PIP_RETRIES=10","","# Install all system dependencies in one transaction from the provider-local mirror.","RUN set -eux; \\",' mirror="${APT_MIRROR_URL%/}"; \\'," for source_file in /etc/apt/sources.list /etc/apt/sources.list.d/*.sources; do \\",' [ -f "$source_file" ] || continue; \\',' sed -i -E "s#https?://(archive|security).ubuntu.com/ubuntu/?#${mirror}#g" "$source_file"; \\'," done; \\",` printf 'Acquire::Retries "5";\\nAcquire::ForceIPv4 "true";\\nAcquire::http::Timeout "60";\\nAcquire::https::Timeout "60";\\n' > /etc/apt/apt.conf.d/80-veadk-network; \\`," apt-get update; \\"," apt-get install -y --no-install-recommends \\",...f.map(b=>" "+b+" \\")," ; rm -rf /var/lib/apt/lists/*","","ENV PYTHONDONTWRITEBYTECODE=1 \\"," PYTHONUNBUFFERED=1 \\"," PIP_NO_CACHE_DIR=1","",`# Python ${l}`),i?h.push("# Keep Studio dependencies isolated from AIO's system interpreter.","RUN /opt/python3.12/bin/python -m venv /opt/veadk-environment/.venv","","ENV VIRTUAL_ENV=/opt/veadk-environment/.venv \\"," BASH_VENV_PATH=/opt/veadk-environment/.venv \\",' PATH="/opt/veadk-environment/.venv/bin:$PATH"'):r?h.push("# Keep Studio dependencies isolated from the Codex runtime.","RUN python3 -m venv /opt/veadk-environment/.venv","","ENV VIRTUAL_ENV=/opt/veadk-environment/.venv \\",' PATH="/opt/veadk-environment/.venv/bin:$PATH"'):d?h.push(`RUN python${l} -m venv /opt/venv`):h.push(`RUN curl --retry 5 --retry-all-errors --connect-timeout 30 -fsSL "\${PYTHON_SOURCE_BASE_URL}/${c}/Python-${c}.tgz" -o /tmp/python.tgz \\`," && mkdir -p /tmp/python-source \\"," && tar -xzf /tmp/python.tgz --strip-components=1 -C /tmp/python-source \\"," && cd /tmp/python-source \\"," && ./configure --prefix=/opt/python --with-ensurepip=install \\",' && make -j"$(nproc)" \\'," && make install \\",` && /opt/python/bin/python${l} -m venv /opt/venv \\`," && rm -rf /tmp/python-source /tmp/python.tgz"),s||h.push("",'ENV PATH="/opt/venv/bin:$PATH"');const m=new Set(e.optionIds);(m.has("playwright")||m.has("chromium"))&&h.push("","ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \\"," PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=300000"),h.push("","WORKDIR /workspace","","# VeADK","RUN python -m pip install --upgrade veadk-python");let g=!1;for(const b of n)h.push("",`# ${b.label}`),b.id==="opencli"?h.push('RUN node_arch="$(dpkg --print-architecture)" \\',' && case "$node_arch" in amd64) node_arch=x64 ;; arm64) node_arch=arm64 ;; *) echo "Unsupported architecture: $node_arch" >&2; exit 1 ;; esac \\',' && curl --retry 5 --connect-timeout 30 -fsSL "https://nodejs.org/dist/v22.18.0/node-v22.18.0-linux-${node_arch}.tar.xz" -o /tmp/node.tar.xz \\'," && tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 \\",` && npm install --global ${b.packageName} \\`," && npm cache clean --force \\"," && rm -f /tmp/node.tar.xz"):b.id==="playwright"||b.id==="chromium"?g||(h.push("RUN python -m pip install --upgrade playwright"),h.push("RUN python -m playwright install chromium"),g=!0):b.installer!=="apt"&&h.push(`RUN python -m pip install --upgrade ${b.packageName}`);return i?h.push("","# Keep AIO's inherited /opt/gem/run.sh startup chain and shell API.","EXPOSE 8080"):r||h.push("",'CMD ["/bin/bash"]'),h.join(` +}`,Qyt=[{key:"DATABASE_VIKING_PROJECT",required:!1,placeholder:"default"},{key:"DATABASE_VIKING_REGION",required:!1},{key:"DATABASE_VIKING_COLLECTION_KIND",required:!1},{key:"DATABASE_VIKING_RESOURCE_ID",required:!1}],zyt=[Ed({key:"DATABASE_VIKINGMEM_PROJECT",required:!1,placeholder:"default",hidden:!0},{comment:"traditional.catalog.env.vikingMemoryProject.comment"}),Ed({key:"DATABASE_VIKING_REGION",required:!1,hidden:!0},{comment:"traditional.catalog.env.vikingMemoryRegion.comment"}),Ed({key:"DATABASE_VIKINGMEM_MEMORY_TYPE",required:!1,placeholder:"sys_event_v1,sys_profile_v1",hidden:!0},{comment:"traditional.catalog.env.vikingMemoryType.comment"})],xO=[Ed({key:"FEISHU_APP_ID",required:!0,placeholder:"cli_xxx"},{comment:"traditional.catalog.env.feishuAppId.comment"}),Ed({key:"FEISHU_APP_SECRET",required:!0,secret:!0},{placeholder:"traditional.catalog.env.feishuAppSecret.placeholder",comment:"traditional.catalog.env.feishuAppSecret.comment"})],bw={topK:"3",region:"cn-beijing",endpoint:"https://open.volcengineapi.com/"};function jM(e){if(e==="byteplus"){const t="ap-southeast-1";return{topK:bw.topK,region:t,endpoint:`https://agentkit.${t}.byteplusapi.com/`}}return bw}const fLe=[Ed({key:"REGISTRY_SPACE_ID",required:!0},{placeholder:"traditional.catalog.env.registrySpaceId.placeholder",comment:"traditional.catalog.env.registrySpaceId.comment"}),Ed({key:"REGISTRY_TOP_K",required:!1,placeholder:bw.topK},{comment:"traditional.catalog.env.registryTopK.comment"}),Ed({key:"REGISTRY_REGION",required:!1,placeholder:bw.region},{comment:"traditional.catalog.env.registryRegion.comment"}),Ed({key:"REGISTRY_ENDPOINT",required:!1,placeholder:bw.endpoint},{comment:"traditional.catalog.env.registryEndpoint.comment"})],mT=pT([{id:"web_search",importLine:"from veadk.tools.builtin_tools.web_search import web_search",toolNames:["web_search"],env:jI},{id:"parallel_web_search",importLine:"from veadk.tools.builtin_tools.parallel_web_search import parallel_web_search",toolNames:["parallel_web_search"],env:jI},{id:"link_reader",importLine:"from veadk.tools.builtin_tools.link_reader import link_reader",toolNames:["link_reader"],env:[]},{id:"web_scraper",importLine:"from veadk.tools.builtin_tools.web_scraper import web_scraper",toolNames:["web_scraper"],env:[{key:"TOOL_WEB_SCRAPER_ENDPOINT",required:!0},{key:"TOOL_WEB_SCRAPER_API_KEY",required:!0}]},{id:"image_generate",importLine:"from veadk.tools.builtin_tools.image_generate import image_generate",toolNames:["image_generate"],env:[{key:"MODEL_IMAGE_NAME",required:!1,placeholder:"doubao-seedream-5-0-260128"}]},{id:"image_edit",importLine:"from veadk.tools.builtin_tools.image_edit import image_edit",toolNames:["image_edit"],env:[{key:"MODEL_EDIT_NAME",required:!1,placeholder:"doubao-seededit-3-0-i2i-250628"}]},{id:"video_generate",importLine:"from veadk.tools.builtin_tools.video_generate import video_generate, video_task_query",toolNames:["video_generate","video_task_query"],env:[{key:"MODEL_VIDEO_NAME",required:!1,placeholder:"doubao-seedance-2-0-260128"}]},{id:"text_to_speech",importLine:"from veadk.tools.builtin_tools.tts import text_to_speech",toolNames:["text_to_speech"],env:[{key:"TOOL_VESPEECH_APP_ID",required:!0},{key:"TOOL_VESPEECH_SPEAKER",required:!1,placeholder:"zh_female_vv_uranus_bigtts"}]},{id:"run_code",importLine:"from veadk.tools.builtin_tools.run_code import run_code",toolNames:["run_code"],env:[{key:"AGENTKIT_TOOL_ID",required:!0,placeholder:"t-xxxx",get comment(){return Jt("traditional.catalog.env.agentKitToolId.comment")}},{key:"AGENTKIT_TOOL_REGION",required:!1,placeholder:"cn-beijing",get comment(){return Jt("traditional.catalog.env.agentKitToolRegion.comment")}}]},{id:"vesearch",importLine:"from veadk.tools.builtin_tools.vesearch import vesearch",toolNames:["vesearch"],env:[{key:"TOOL_VESEARCH_ENDPOINT",required:!0,comment:"VeSearch bot_id"}]}],"traditional.catalog"),Vyt=new Set(["web_scraper","text_to_speech","vesearch"]),Hyt=new Set(["web_search","parallel_web_search"]),qyt=mT.filter(e=>!Vyt.has(e.id));function hLe(e="volcengine"){const t=e==="byteplus"?Hyt:new Set;return qyt.filter(n=>!t.has(n.id))}const yw=pT([{id:"local",env:[]},{id:"sqlite",extraArgs:'local_database_path="./short_term_memory.db"',env:[]},{id:"mysql",env:[{key:"DATABASE_MYSQL_HOST",required:!0},{key:"DATABASE_MYSQL_USER",required:!0},{key:"DATABASE_MYSQL_PASSWORD",required:!0},{key:"DATABASE_MYSQL_DATABASE",required:!0}]},{id:"postgresql",env:[{key:"DATABASE_POSTGRESQL_HOST",required:!0},{key:"DATABASE_POSTGRESQL_PORT",required:!1,placeholder:"5432"},{key:"DATABASE_POSTGRESQL_USER",required:!0},{key:"DATABASE_POSTGRESQL_PASSWORD",required:!0},{key:"DATABASE_POSTGRESQL_DATABASE",required:!0}]}],"traditional.backends.shortTerm"),HB=pT([{id:"local",env:$N,pipExtra:"extensions",needsEmbedding:!0},{id:"opensearch",env:[{key:"DATABASE_OPENSEARCH_HOST",required:!0},{key:"DATABASE_OPENSEARCH_PORT",required:!1,placeholder:"9200"},{key:"DATABASE_OPENSEARCH_USERNAME",required:!0},{key:"DATABASE_OPENSEARCH_PASSWORD",required:!0},...$N],pipExtra:"extensions",needsEmbedding:!0},{id:"redis",env:[{key:"DATABASE_REDIS_HOST",required:!0},{key:"DATABASE_REDIS_PORT",required:!1,placeholder:"6379"},{key:"DATABASE_REDIS_PASSWORD",required:!1},...$N],pipExtra:"extensions",needsEmbedding:!0},{id:"viking",env:zyt},{id:"openviking",env:[{key:"DATABASE_OPENVIKING_URL",required:!0,placeholder:dLe,get comment(){return Jt("traditional.catalog.env.openVikingUrl.comment")},link:NI},{key:"DATABASE_OPENVIKING_API_KEY",required:!0,comment:"OpenViking API Key",link:NI},{key:"DATABASE_OPENVIKING_USER_ID",required:!1,placeholder:"default",get comment(){return Jt("traditional.catalog.env.openVikingMemoryUserId.comment")},get help(){return Jt("traditional.catalog.env.openVikingMemoryUserId.help")}},{key:"DATABASE_OPENVIKING_MEMORY_POLICY",required:!1,placeholder:Uyt,get comment(){return Jt("traditional.catalog.env.openVikingMemoryPolicy.comment")},multiline:!0,format:"json",get help(){return Jt("traditional.catalog.env.openVikingMemoryPolicy.help")},link:Byt}]},{id:"mem0",env:[{key:"DATABASE_MEM0_API_KEY",required:!0},{key:"DATABASE_MEM0_BASE_URL",required:!1}],pipExtra:"database"}],"traditional.backends.longTerm"),zg="viking",qB=pT([{id:"viking",env:Qyt},{id:"opensearch",env:[{key:"DATABASE_OPENSEARCH_HOST",required:!0},{key:"DATABASE_OPENSEARCH_PORT",required:!1,placeholder:"9200"},{key:"DATABASE_OPENSEARCH_USERNAME",required:!0},{key:"DATABASE_OPENSEARCH_PASSWORD",required:!0},...$N],pipExtra:"extensions",needsEmbedding:!0},{id:"context_search",env:[...jI,{key:"DATABASE_CONTEXT_SEARCH_ENGINE_ID",required:!0},{key:"DATABASE_CONTEXT_SEARCH_ENGINE_ENDPOINT",required:!0},{key:"DATABASE_CONTEXT_SEARCH_ENGINE_APIKEY",required:!0}]},{id:"openviking",env:[{key:"DATABASE_OPENVIKING_URL",required:!0,placeholder:dLe,get comment(){return Jt("traditional.catalog.env.openVikingUrl.comment")},link:NI},{key:"DATABASE_OPENVIKING_API_KEY",required:!0,comment:"OpenViking API Key",link:NI},{key:"DATABASE_OPENVIKING_USER_ID",required:!1,placeholder:"default",get comment(){return Jt("traditional.catalog.env.openVikingKnowledgeUserId.comment")},get help(){return Jt("traditional.catalog.env.openVikingKnowledgeUserId.help")}},{key:"DATABASE_OPENVIKING_TARGET_URI",required:!1,placeholder:"viking://user/default/resources//",get comment(){return Jt("traditional.catalog.env.openVikingTargetUri.comment")},get help(){return Jt("traditional.catalog.env.openVikingTargetUri.help")}}]}],"traditional.backends.knowledge"),Wyt=pT([{id:"apmplus",enableFlag:"ENABLE_APMPLUS",env:[{key:"OBSERVABILITY_OPENTELEMETRY_APMPLUS_SERVICE_NAME",required:!1}]},{id:"cozeloop",enableFlag:"ENABLE_COZELOOP",env:[{key:"OBSERVABILITY_OPENTELEMETRY_COZELOOP_API_KEY",required:!0},{key:"OBSERVABILITY_OPENTELEMETRY_COZELOOP_SERVICE_NAME",required:!1,comment:"CozeLoop space_id"}]},{id:"tls",enableFlag:"ENABLE_TLS",env:[...jI,Ed({key:"OBSERVABILITY_OPENTELEMETRY_TLS_SERVICE_NAME",required:!1},{comment:"traditional.catalog.env.tlsServiceName.comment"})]}],"traditional.exporters");function Pd(e="volcengine"){return{name:"",description:Jt("defaults.description"),instruction:Jt("defaults.instruction"),dynamicAgentDelegation:!1,agentType:"llm",cloudProvider:e,maxIterations:3,a2aUrl:"",tools:[],skills:[],memory:{shortTerm:!1,longTerm:!1},knowledgebase:!1,tracing:!1,subAgents:[],builtinTools:[],customTools:[],mcpTools:[],a2aRegistry:{enabled:!1,registrySpaceId:"",registryTopK:"",registryRegion:"",registryEndpoint:""},modelName:nm(e),modelFallbacks:[],modelSource:"ark",modelProvider:"",modelApiBase:"",shortTermBackend:"local",longTermBackend:"local",longTermMemoryIndex:"",autoSaveSession:!1,knowledgebaseBackend:zg,knowledgebaseIndex:"",tracingExporters:[],selectedSkills:[],cloudEnvironment:{environmentId:"",environmentVersionId:""},deployment:{feishuEnabled:!1,modelApiKeyId:"",modelApiKeyName:""}}}function kS(e){return{id:e,get displayName(){return Jt(`traditional.optimization.options.${e}.label`)},get description(){return Jt(`traditional.optimization.options.${e}.description`)}}}const EH=[kS("context_engine"),kS("compressor"),kS("verifier"),kS("long_run_control"),kS("mcp_resilience")],Kyt=[{id:"quality",get displayName(){return Jt("traditional.optimization.groups.quality")},componentIds:["context_engine","verifier"]},{id:"cost",get displayName(){return Jt("traditional.optimization.groups.cost")},componentIds:["compressor"]},{id:"stability",get displayName(){return Jt("traditional.optimization.groups.stability")},componentIds:["long_run_control","mcp_resilience"]}],ck=EH.map(e=>e.id);function Gyt(e){return e==="byteplus"?Jt("traditional.optimization.bytePlusUnavailable"):null}const pLe=["context_engine","compressor","verifier","long_run_control"],Xyt=new Set(["1","true","yes","on"]),CH=[{id:"default",get displayName(){return Jt("traditional.optimization.profiles.default.label")},get description(){return Jt("traditional.optimization.profiles.default.description")},defaultComponents:[],autoAddedComponents:[]},{id:"ops",get displayName(){return Jt("traditional.optimization.profiles.ops.label")},get description(){return Jt("traditional.optimization.profiles.ops.description")},defaultComponents:["context_engine","verifier","long_run_control","mcp_resilience"],autoAddedComponents:["sql_readonly"]}];function FN(e){var t;return((t=EH.find(n=>n.id===e))==null?void 0:t.displayName)??e}function Yyt(e){var t;return((t=CH.find(n=>n.id===e))==null?void 0:t.displayName)??e}function AH(e){const t=CH.find(n=>n.id===e);return t?[...t.defaultComponents]:[]}function qy(e,t="default"){const n=new Set(e);return{enabled:n.size>0,profile:t,componentOverrides:Object.fromEntries(ck.map(r=>[r,n.has(r)]))}}function TH(e){if(!e)return;const t=e.profile==="ops"?"ops":"default",n=t==="ops"?AH(t):ck.filter(i=>{var r;return((r=e.componentOverrides)==null?void 0:r[i])===!0});return{...qy(n,t),...e.catalogVersion?{catalogVersion:e.catalogVersion}:{},...e.planHash?{planHash:e.planHash}:{}}}function x4(e){return Xyt.has((e==null?void 0:e.trim().toLowerCase())??"")}function Zyt(e){if(!e)return null;try{const t=JSON.parse(e);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}}function Jyt(e){var o;const t=new Map((e==null?void 0:e.map(({key:l,value:c})=>[l,c]))??[]),n=t.get("HARNESS_SIDECAR_ENABLED");if(n===void 0)return null;const i=((o=t.get("HARNESS_PROFILE"))==null?void 0:o.trim())==="ops"?"ops":"default";if(!x4(n))return qy([],i);const r=Zyt(t.get("HARNESS_SIDECAR_COMPONENT_OVERRIDES"));if(r){const l={...qy(ck.filter(c=>r[c]===!0),i),enabled:!0};return i==="ops"?TH(l)??l:l}if(i==="ops")return qy(AH(i),i);const s=[...x4(t.get("HARNESS_MODEL_PROXY_ENABLED"))?pLe:[],...x4(t.get("HARNESS_MCP_GATEWAY_ENABLED"))?["mcp_resilience"]:[]];return{...qy(s,i),enabled:!0}}function evt(e,t){return{...e,modelName:t.modelName||e.modelName,description:t.description,instruction:t.instruction}}function tvt(e){var t;return((t=e.harnessSidecar)==null?void 0:t.profile)??"default"}function RI(e){var n;const t=(n=e.harnessSidecar)==null?void 0:n.componentOverrides;return t?ck.filter(i=>t[i]):[]}function nvt(e){const t=new Set(RI(e));return pLe.filter(n=>t.has(n))}function ivt(e,t){const n=i=>({...i,mcpTools:(i.mcpTools??[]).map(r=>{var o,l;const s=!!(r.authTokenEnv&&(t.has(r.authTokenEnv)||r.authToken));return{...r,credentialConfigured:s,...s?{credentialSourceUrl:((o=r.url)==null?void 0:o.trim())??"",credentialSourceAuthTokenEnv:((l=r.authTokenEnv)==null?void 0:l.trim())??""}:{}}}),subAgents:i.subAgents.map(n),...i.workflow?{workflow:{...i.workflow,nodes:i.workflow.nodes.map(r=>({...r,agent:n(r.agent)}))}}:{}});return n(e)}function uk(e){const t=(e==null?void 0:e.trim())??"",n=t.indexOf("/");return n<=0||n===t.length-1?{modelName:t,modelProvider:""}:{modelName:t.slice(n+1),modelProvider:t.slice(0,n)}}function _H(e){return uk(e).modelName}function mLe(e,t,n,i=!1){var c,u,d,f;const r=uk((t==null?void 0:t.model)||(n==null?void 0:n.model)),s=(t==null?void 0:t.children)??[],o=t==null?void 0:t.type,l=e.agentType==="a2a"&&((c=e.a2aRegistry)!=null&&c.enabled)&&o==="llm"?"a2a":o??e.agentType;return{...e,name:((u=t==null?void 0:t.name)==null?void 0:u.trim())||((d=n==null?void 0:n.name)==null?void 0:d.trim())||e.name,description:(t==null?void 0:t.description)??e.description,instruction:i?e.instruction:(t==null?void 0:t.instruction)??e.instruction,agentType:l,modelName:r.modelName||e.modelName,modelProvider:r.modelProvider||e.modelProvider,skills:((f=t==null?void 0:t.skills)==null?void 0:f.map(h=>h.name))??e.skills,subAgents:e.subAgents.map((h,m)=>mLe(h,s[m],void 0,i))}}function rvt(e,t){const n=new Map(t.map(({key:o,value:l})=>[o,l]));if(!["REGISTRY_SPACE_ID","REGISTRY_TOP_K","REGISTRY_REGION","REGISTRY_ENDPOINT"].some(o=>n.has(o)))return e;const r=(o,l)=>n.has(o)?n.get(o)??"":l??"",s=o=>{var l;return{...o,...(l=o.a2aRegistry)!=null&&l.enabled?{a2aRegistry:{...o.a2aRegistry,registrySpaceId:r("REGISTRY_SPACE_ID",o.a2aRegistry.registrySpaceId),registryTopK:r("REGISTRY_TOP_K",o.a2aRegistry.registryTopK),registryRegion:r("REGISTRY_REGION",o.a2aRegistry.registryRegion),registryEndpoint:r("REGISTRY_ENDPOINT",o.a2aRegistry.registryEndpoint)}}:{},subAgents:o.subAgents.map(s)}};return s(e)}function WB(e,t){var c,u,d;const n=e.cloudProvider??t,i=Pd(n),r=e.deployment,s=r==null?void 0:r.network,o=e.cloudEnvironment,l=e.a2aRegistry;return{...i,...e,name:e.name??i.name,description:e.description??i.description,instruction:e.instruction??i.instruction,agentType:e.agentType??i.agentType,cloudProvider:n,maxIterations:e.maxIterations??i.maxIterations,a2aUrl:e.a2aUrl??i.a2aUrl,model:e.model??void 0,modelSource:e.modelSource==="ark"||e.modelSource==="custom"?e.modelSource:void 0,modelName:e.modelName??i.modelName,modelProvider:e.modelProvider??i.modelProvider,modelApiBase:e.modelApiBase??i.modelApiBase,memory:{shortTerm:((c=e.memory)==null?void 0:c.shortTerm)??i.memory.shortTerm,longTerm:((u=e.memory)==null?void 0:u.longTerm)??i.memory.longTerm},tools:[...e.tools??[]],skills:[...e.skills??[]],knowledgebase:e.knowledgebase??i.knowledgebase,tracing:e.tracing??i.tracing,harnessSidecar:TH(e.harnessSidecar),subAgents:(e.subAgents??[]).map(f=>WB(f,n)),builtinTools:[...e.builtinTools??[]],customTools:[...e.customTools??[]],mcpTools:[...e.mcpTools??[]],a2aRegistry:{...i.a2aRegistry,...l??{},enabled:(l==null?void 0:l.enabled)??!1,registrySpaceId:(l==null?void 0:l.registrySpaceId)??"",registryTopK:(l==null?void 0:l.registryTopK)??"",registryRegion:(l==null?void 0:l.registryRegion)??"",registryEndpoint:(l==null?void 0:l.registryEndpoint)??""},shortTermBackend:e.shortTermBackend??i.shortTermBackend,longTermBackend:e.longTermBackend??i.longTermBackend,longTermMemoryIndex:e.longTermMemoryIndex??i.longTermMemoryIndex,autoSaveSession:e.autoSaveSession??i.autoSaveSession,knowledgebaseBackend:e.knowledgebaseBackend??i.knowledgebaseBackend,knowledgebaseIndex:e.knowledgebaseIndex??i.knowledgebaseIndex,tracingExporters:[...e.tracingExporters??[]],selectedSkills:[...e.selectedSkills??[]],cloudEnvironment:{...i.cloudEnvironment,...o??{},cliTools:[...(o==null?void 0:o.cliTools)??[]],dockerfile:typeof(o==null?void 0:o.dockerfile)=="string"?o.dockerfile:void 0},deployment:{...i.deployment,...r??{},feishuEnabled:(r==null?void 0:r.feishuEnabled)??!1,runtimeName:(r==null?void 0:r.runtimeName)??void 0,runtimeNameCustomized:(r==null?void 0:r.runtimeNameCustomized)??((d=i.deployment)==null?void 0:d.runtimeNameCustomized),network:s?{...s,vpcId:s.vpcId??"",subnetIds:s.subnetIds??"",enableSharedInternetAccess:s.enableSharedInternetAccess??!1}:void 0,modelApiKeyId:(r==null?void 0:r.modelApiKeyId)??"",modelApiKeyName:(r==null?void 0:r.modelApiKeyName)??"",envValues:(r==null?void 0:r.envValues)??void 0},...e.workflow?{workflow:{...e.workflow,nodes:e.workflow.nodes.map(f=>({...f,agent:WB(f.agent,n)}))}}:{}}}const svt=["动态子智能体协作规则:","Dynamic sub-agent collaboration rules:"],avt=["collect_resources","create_agents","handoff_to"];function ovt(e){return e.replace(/\\([\\`*_[\]{}()<>#+\-.!|])/g,"$1")}function lvt(e){const t=svt.flatMap(i=>{const r=[];let s=0;for(;si-r),n=t.find((i,r)=>{const s=t[r+1]??e.length,o=ovt(e.slice(i,s));return avt.every(l=>o.includes(l))});return n===void 0?e:e.slice(0,n).trimEnd()}function cvt(e){const t=n=>({...n,instruction:n.dynamicAgentDelegation===!0?lvt(n.instruction):n.instruction,subAgents:n.subAgents.map(t),...n.workflow?{workflow:{...n.workflow,nodes:n.workflow.nodes.map(i=>({...i,agent:t(i.agent)}))}}:{}});return t(e)}function gLe(e,t){var l,c;const n=Pd(t),i=[...e.tools??[]],r=mT.filter(u=>u.toolNames.some(d=>i.includes(d))),s=new Set(r.flatMap(u=>u.toolNames)),o=uk(e.model);return{...n,modelSource:void 0,name:((l=e.name)==null?void 0:l.trim())??"",description:e.description??"",instruction:e.instruction||n.instruction,agentType:e.type??"llm",modelName:o.modelName,modelProvider:o.modelProvider,tools:i.filter(u=>!s.has(u)),builtinTools:r.map(u=>u.id),skills:((c=e.skills)==null?void 0:c.map(u=>u.name))??[],subAgents:(e.children??[]).map(u=>gLe(u,t))}}function jH(e,t,n=[]){var l,c,u,d;const i=((l=e.draft)==null?void 0:l.cloudProvider)??t,r=uk(e.model),s=e.draft?WB(e.draft,i):e.graph?gLe(e.graph,i):{...Pd(i),modelSource:void 0,name:((c=e.name)==null?void 0:c.trim())||e.appName.trim(),description:e.description??"",instruction:e.instruction||Pd(i).instruction,agentType:e.type??"llm",modelName:r.modelName,modelProvider:r.modelProvider,tools:[...e.tools??[]],skills:((u=e.skills)==null?void 0:u.map(f=>f.name))??[]},o=e.draft&&s.dynamicAgentDelegation===!0?cvt(s):s;return ivt(mLe(o,e.graph,{name:((d=e.name)==null?void 0:d.trim())||e.appName.trim(),model:e.model},!!e.draft),new Set(n))}function uvt(e,t){const n=i=>{var s;const r=((s=i.modelName)==null?void 0:s.trim())??"";return{...i,modelSource:i.agentType==="llm"||!i.agentType?t.has(r)?"ark":"custom":i.modelSource,subAgents:i.subAgents.map(n),...i.workflow?{workflow:{...i.workflow,nodes:i.workflow.nodes.map(o=>({...o,agent:n(o.agent)}))}}:{}}};return n(e)}const II=[{id:"ubuntu-22.04",label:"Ubuntu 22.04",image:"ubuntu:22.04"},{id:"ubuntu-24.04",label:"Ubuntu 24.04",image:"ubuntu:24.04"}],bLe=[{id:"aio-sandbox",label:"AIO Sandbox",description:"内置 Sandbox Shell 能力 · Ubuntu 22.04"},{id:"codex-sandbox",label:"Codex Sandbox",description:"内置 Codex CLI、浏览器与代码执行环境"},{id:"ubuntu",label:"Ubuntu",description:"标准 Linux 基础镜像"}],NH={volcengine:"enterprise-public-cn-beijing.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2",byteplus:"enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/agentkit-sandbox:all-in-one-1.0.2"},yLe={volcengine:"enterprise-public-cn-beijing.cr.volces.com/vefaas-public/codexenv:1.1.0",byteplus:"enterprise-public-ap-southeast-1.cr.volces.com/vefaas-public/codexenv:1.1.0"},vLe=[{id:"python-3.10",label:"Python 3.10"},{id:"python-3.12",label:"Python 3.12"}],dvt={"python-3.10":"3.10.18","python-3.12":"3.12.11"},RH=[{id:"tools",label:"工具",description:"常用 CLI 与内容处理工具",options:[{id:"lark-cli",label:"lark-cli",description:"飞书开放平台命令行工具",installer:"pip",packageName:"lark-cli"},{id:"pandoc",label:"pandoc",description:"文档格式转换工具",installer:"apt",packageName:"pandoc"},{id:"opencli",label:"opencli",description:"将网站与桌面应用转换为命令行工具",installer:"npm",packageName:"@jackwener/opencli@1.8.7"}]},{id:"productivity",label:"效率",description:"加速依赖安装、检索和协作",options:[{id:"uv",label:"uv",description:"快速 Python 包与项目管理器",installer:"pip",packageName:"uv"},{id:"ripgrep",label:"ripgrep",description:"高性能文本检索工具",installer:"apt",packageName:"ripgrep"},{id:"jq",label:"jq",description:"JSON 查询与转换工具",installer:"apt",packageName:"jq"},{id:"github-cli",label:"GitHub CLI",description:"在终端中管理 GitHub 工作流",installer:"apt",packageName:"gh"}]},{id:"browser",label:"浏览器自动化",description:"网页操作、测试与内容采集",options:[{id:"playwright",label:"Playwright",description:"浏览器自动化与端到端测试",installer:"pip",packageName:"playwright"},{id:"chromium",label:"Chromium",description:"无头浏览器运行时",installer:"apt",packageName:"chromium"}]},{id:"system",label:"系统与媒体",description:"基础开发、网络和媒体处理能力",options:[{id:"git",label:"Git",description:"代码版本管理",installer:"apt",packageName:"git"},{id:"curl",label:"curl",description:"网络请求与文件下载",installer:"apt",packageName:"curl"},{id:"ffmpeg",label:"FFmpeg",description:"音视频转码与处理",installer:"apt",packageName:"ffmpeg"},{id:"imagemagick",label:"ImageMagick",description:"图片转换与批处理",installer:"apt",packageName:"imagemagick"}]}],fvt=RH.flatMap(e=>e.options),hvt=["build-essential","curl","libbz2-dev","libffi-dev","libgdbm-dev","liblzma-dev","libncursesw5-dev","libreadline-dev","libsqlite3-dev","libssl-dev","tk-dev","uuid-dev","zlib1g-dev"],pvt=["xvfb","fonts-noto-color-emoji","fonts-unifont","libfontconfig1","libfreetype6","xfonts-cyrillic","xfonts-scalable","fonts-liberation","fonts-ipafont-gothic","fonts-wqy-zenhei","fonts-tlwg-loma-otf","fonts-freefont-ttf"],mvt={"ubuntu-22.04":["libasound2","libatk-bridge2.0-0","libatk1.0-0","libatspi2.0-0","libcairo2","libcups2","libdbus-1-3","libdrm2","libgbm1","libglib2.0-0","libnspr4","libnss3","libpango-1.0-0","libwayland-client0","libx11-6","libxcb1","libxcomposite1","libxdamage1","libxext6","libxfixes3","libxkbcommon0","libxrandr2"],"ubuntu-24.04":["libasound2t64","libatk-bridge2.0-0t64","libatk1.0-0t64","libatspi2.0-0t64","libcairo2","libcups2t64","libdbus-1-3","libdrm2","libgbm1","libglib2.0-0t64","libnspr4","libnss3","libpango-1.0-0","libx11-6","libxcb1","libxcomposite1","libxdamage1","libxext6","libxfixes3","libxkbcommon0","libxrandr2"]};function SS(e,t){for(const n of t)e.includes(n)||e.push(n)}function gvt(e,t,n,i,r){const s=["ca-certificates"];r||SS(s,i?[`python${n}`,`python${n}-venv`]:hvt);for(const o of t)o.id==="playwright"||o.id==="chromium"||(o.installer==="apt"&&SS(s,[o.packageName]),o.id==="opencli"&&SS(s,["curl","xz-utils"]));return e.optionIds.some(o=>o==="playwright"||o==="chromium")&&(SS(s,pvt),SS(s,mvt[e.operatingSystem])),s}const w4={name:"",description:"",baseEnvironment:"aio-sandbox",operatingSystem:"ubuntu-22.04",language:"python-3.12",optionIds:[],selectedSkills:[]};function Vp(e){var t;return((t=vLe.find(n=>n.id===e))==null?void 0:t.label)??e}function KB(e){var t;return((t=II.find(n=>n.id===e))==null?void 0:t.label)??e}function GB(e){var t;return((t=bLe.find(n=>n.id===e))==null?void 0:t.label)??e}function bvt(e){var n;const t=((n=e.match(/^\s*FROM\s+(.+)$/im))==null?void 0:n[1])??"";return{baseEnvironment:/\/codexenv:/i.test(t)?"codex-sandbox":/aio\.sandbox/i.test(e)?"aio-sandbox":"ubuntu",operatingSystem:/ubuntu:24\.04/i.test(t)?"ubuntu-24.04":"ubuntu-22.04"}}function IH(e,t="volcengine"){const n=fvt.filter(b=>e.optionIds.includes(b.id)),i=e.baseEnvironment==="aio-sandbox",r=e.baseEnvironment==="codex-sandbox",s=i||r,o=s?"python-3.12":e.language,l=o.replace("python-",""),c=dvt[o],u=II.find(b=>b.id===e.operatingSystem)??II[0],d=e.operatingSystem==="ubuntu-22.04"&&l==="3.10"||e.operatingSystem==="ubuntu-24.04"&&l==="3.12",f=gvt(e,n,l,d,s),h=i?[`ARG AIO_BASE_IMAGE=${NH[t]}`,"ARG AIO_BASE_PLATFORM=linux/amd64","",`# Base environment: AIO Sandbox (${u.label})`,"FROM --platform=${AIO_BASE_PLATFORM} ${AIO_BASE_IMAGE}"]:r?[`ARG CODEX_BASE_IMAGE=${yLe[t]}`,"ARG CODEX_BASE_PLATFORM=linux/amd64","","# Base environment: Codex Sandbox","FROM --platform=${CODEX_BASE_PLATFORM} ${CODEX_BASE_IMAGE}"]:[`# Operating system: ${u.label}`,`FROM ${u.image}`];h.push("","ARG DEBIAN_FRONTEND=noninteractive","ARG APT_MIRROR_URL=http://archive.ubuntu.com/ubuntu","ARG PIP_INDEX_URL=https://pypi.org/simple","ARG PYTHON_SOURCE_BASE_URL=https://www.python.org/ftp/python","ARG PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.playwright.dev","ARG PIP_DEFAULT_TIMEOUT=300","ARG PIP_RETRIES=10","","# Install all system dependencies in one transaction from the provider-local mirror.","RUN set -eux; \\",' mirror="${APT_MIRROR_URL%/}"; \\'," for source_file in /etc/apt/sources.list /etc/apt/sources.list.d/*.sources; do \\",' [ -f "$source_file" ] || continue; \\',' sed -i -E "s#https?://(archive|security).ubuntu.com/ubuntu/?#${mirror}#g" "$source_file"; \\'," done; \\",` printf 'Acquire::Retries "5";\\nAcquire::ForceIPv4 "true";\\nAcquire::http::Timeout "60";\\nAcquire::https::Timeout "60";\\n' > /etc/apt/apt.conf.d/80-veadk-network; \\`," apt-get update; \\"," apt-get install -y --no-install-recommends \\",...f.map(b=>" "+b+" \\")," ; rm -rf /var/lib/apt/lists/*","","ENV PYTHONDONTWRITEBYTECODE=1 \\"," PYTHONUNBUFFERED=1 \\"," PIP_NO_CACHE_DIR=1","",`# Python ${l}`),i?h.push("# Keep Studio dependencies isolated from AIO's system interpreter.","RUN /opt/python3.12/bin/python -m venv /opt/veadk-environment/.venv","","ENV VIRTUAL_ENV=/opt/veadk-environment/.venv \\"," BASH_VENV_PATH=/opt/veadk-environment/.venv \\",' PATH="/opt/veadk-environment/.venv/bin:$PATH"'):r?h.push("# Keep Studio dependencies isolated from the Codex runtime.","RUN python3 -m venv /opt/veadk-environment/.venv","","ENV VIRTUAL_ENV=/opt/veadk-environment/.venv \\",' PATH="/opt/veadk-environment/.venv/bin:$PATH"'):d?h.push(`RUN python${l} -m venv /opt/venv`):h.push(`RUN curl --retry 5 --retry-all-errors --connect-timeout 30 -fsSL "\${PYTHON_SOURCE_BASE_URL}/${c}/Python-${c}.tgz" -o /tmp/python.tgz \\`," && mkdir -p /tmp/python-source \\"," && tar -xzf /tmp/python.tgz --strip-components=1 -C /tmp/python-source \\"," && cd /tmp/python-source \\"," && ./configure --prefix=/opt/python --with-ensurepip=install \\",' && make -j"$(nproc)" \\'," && make install \\",` && /opt/python/bin/python${l} -m venv /opt/venv \\`," && rm -rf /tmp/python-source /tmp/python.tgz"),s||h.push("",'ENV PATH="/opt/venv/bin:$PATH"');const m=new Set(e.optionIds);(m.has("playwright")||m.has("chromium"))&&h.push("","ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright \\"," PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=300000"),h.push("","WORKDIR /workspace","","# VeADK","RUN python -m pip install --upgrade veadk-python");let g=!1;for(const b of n)h.push("",`# ${b.label}`),b.id==="opencli"?h.push('RUN node_arch="$(dpkg --print-architecture)" \\',' && case "$node_arch" in amd64) node_arch=x64 ;; arm64) node_arch=arm64 ;; *) echo "Unsupported architecture: $node_arch" >&2; exit 1 ;; esac \\',' && curl --retry 5 --connect-timeout 30 -fsSL "https://nodejs.org/dist/v22.18.0/node-v22.18.0-linux-${node_arch}.tar.xz" -o /tmp/node.tar.xz \\'," && tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 \\",` && npm install --global ${b.packageName} \\`," && npm cache clean --force \\"," && rm -f /tmp/node.tar.xz"):b.id==="playwright"||b.id==="chromium"?g||(h.push("RUN python -m pip install --upgrade playwright"),h.push("RUN python -m playwright install chromium"),g=!0):b.installer!=="apt"&&h.push(`RUN python -m pip install --upgrade ${b.packageName}`);return i?h.push("","# Keep AIO's inherited /opt/gem/run.sh startup chain and shell API.","EXPOSE 8080"):r||h.push("",'CMD ["/bin/bash"]'),h.join(` `)}function yvt(){return a.jsx("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:a.jsx("path",{d:"m7 7 10 10M17 7 7 17",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round"})})}function vvt(){return a.jsxs("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[a.jsx("circle",{cx:"10.8",cy:"10.8",r:"5.8",stroke:"currentColor",strokeWidth:"1.7"}),a.jsx("path",{d:"m15.2 15.2 4 4",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round"})]})}function XB(){return a.jsxs("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[a.jsx("path",{d:"M5 7.25A2.25 2.25 0 0 1 7.25 5h9.5A2.25 2.25 0 0 1 19 7.25v9.5A2.25 2.25 0 0 1 16.75 19h-9.5A2.25 2.25 0 0 1 5 16.75v-9.5Z",stroke:"currentColor",strokeWidth:"1.6"}),a.jsx("path",{d:"M8.5 9.25 11 12l-2.5 2.75M12.75 14.75h2.75",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})]})}function xLe(){return a.jsxs("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[a.jsx("path",{d:"M4.75 7.25A2.25 2.25 0 0 1 7 5h3l1.5 2h5.5a2.25 2.25 0 0 1 2.25 2.25v7.5A2.25 2.25 0 0 1 17 19H7a2.25 2.25 0 0 1-2.25-2.25v-9.5Z",stroke:"currentColor",strokeWidth:"1.6",strokeLinejoin:"round"}),a.jsx("path",{d:"M8 11.25h8M8 14.75h5.5",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})}function xvt(){return a.jsx("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:a.jsx("path",{d:"M12 6.5v11M6.5 12h11",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round"})})}function Jee(){return a.jsx("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:a.jsx("path",{d:"m7 7 10 10M17 7 7 17",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round"})})}function ete(){return a.jsx("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:a.jsx("path",{d:"m3.5 8.25 2.75 2.75 6.25-6.25",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})})}function Rc(e){return`${e.environment_id}\0${e.environment_version_id}`}function mE(e){return e.latestVersion?{environment_id:e.id,environment_version_id:e.latestVersion.versionId}:null}function BN(e,t){return e.environmentIds.flatMap(n=>{const i=t.get(n),r=i?mE(i):null;return r?[r]:[]})}function wvt({environments:e,workspaces:t,value:n,selectedWorkspaceIds:i,loading:r,error:s,onConfirm:o,onClose:l}){const{t:c}=_e("workspaceTools"),[u,d]=p.useState(""),[f,h]=p.useState(!1),[m,g]=p.useState(""),b=p.useId(),v=p.useMemo(()=>new Map(e.map(C=>[C.id,C])),[e]),[y,w]=p.useState(()=>new Set(i)),[x,k]=p.useState(()=>{const C=new Set(t.filter(N=>i.includes(N.id)).flatMap(N=>N.environmentIds));return new Set(n.filter(N=>!C.has(N.environment_id)).map(Rc))}),O=p.useMemo(()=>new Set(t.filter(C=>y.has(C.id)).flatMap(C=>C.environmentIds)),[y,t]),S=p.useMemo(()=>{const C=new Set(x);for(const N of t)if(y.has(N.id))for(const D of BN(N,v))C.add(Rc(D));return C},[x,y,v,t]),A=p.useMemo(()=>{const C=u.trim().toLocaleLowerCase();return C?e.filter(N=>`${N.name} ${N.description} ${Vp(N.language)}`.toLocaleLowerCase().includes(C)):e},[e,u]),E=p.useMemo(()=>{const C=u.trim().toLocaleLowerCase();return C?t.filter(N=>{const D=N.environmentIds.map(I=>{var P;return((P=v.get(I))==null?void 0:P.name)??""}).join(" ");return`${N.name} ${N.description} ${D}`.toLocaleLowerCase().includes(C)}):t},[v,u,t]);p.useEffect(()=>{const C=document.body.style.overflow,N=D=>{D.key==="Escape"&&!f&&l()};return document.body.style.overflow="hidden",document.addEventListener("keydown",N),()=>{document.body.style.overflow=C,document.removeEventListener("keydown",N)}},[l,f]);const j=C=>{const N=mE(C);if(!N)return;const D=Rc(N);O.has(C.id)||k(I=>{const P=new Set(I);return P.has(D)?P.delete(D):P.add(D),P})},T=C=>{const N=BN(C,v);N.length!==0&&(w(D=>{const I=new Set(D);return I.has(C.id)?I.delete(C.id):I.add(C.id),I}),k(D=>{const I=new Set(D);for(const P of N)I.delete(Rc(P));return I}))},R=async()=>{const C=new Map(n.map(D=>[Rc(D),D])),N=e.flatMap(D=>{const I=mE(D);if(!I||!S.has(Rc(I)))return[];const P=C.get(Rc(I));return[{...I,mount_instance_id:(P==null?void 0:P.mount_instance_id)||crypto.randomUUID()}]});h(!0),g("");try{await o(N,[...y]),l()}catch(D){g(D instanceof Error?D.message:c("sessionEnvironment.mountFailed"))}finally{h(!1)}};return bi.createPortal(a.jsxs("div",{className:"studio-tool-dialog-layer",children:[a.jsx("button",{type:"button",className:"studio-tool-dialog-scrim","aria-label":c("sessionEnvironment.closeDialog"),disabled:f,onClick:l}),a.jsxs("section",{className:"studio-tool-dialog session-environment-dialog",role:"dialog","aria-modal":"true","aria-labelledby":b,children:[a.jsxs("header",{className:"studio-tool-dialog-head",children:[a.jsx("span",{className:"studio-tool-dialog-mark",children:a.jsx(XB,{})}),a.jsxs("div",{children:[a.jsx("h2",{id:b,children:c("sessionEnvironment.addTitle")}),a.jsx("p",{children:c("sessionEnvironment.description")})]}),a.jsx("button",{type:"button",className:"studio-tool-dialog-close","aria-label":c("sessionEnvironment.closeAdd"),disabled:f,onClick:l,children:a.jsx(yvt,{})})]}),a.jsxs("div",{className:"studio-tool-dialog-body",children:[a.jsxs("label",{className:"studio-tool-search",children:[a.jsx(vvt,{}),a.jsx("input",{value:u,"aria-label":c("sessionEnvironment.searchAria"),placeholder:c("sessionEnvironment.searchPlaceholder"),autoFocus:!0,onChange:C=>d(C.target.value)})]}),a.jsx("div",{className:"studio-tool-picker session-environment-picker",role:"group","aria-label":c("sessionEnvironment.availableAria"),children:r?a.jsx("div",{className:"studio-tool-empty",children:c("sessionEnvironment.loading")}):s?a.jsx("div",{className:"studio-tool-empty",children:s}):A.length===0&&E.length===0?a.jsx("div",{className:"studio-tool-empty",children:c("sessionEnvironment.noMatch")}):a.jsxs(a.Fragment,{children:[E.length>0&&a.jsxs("section",{className:"session-environment-picker__group","aria-labelledby":`${b}-workspaces`,children:[a.jsx("h3",{id:`${b}-workspaces`,children:c("sessionEnvironment.workspaces")}),E.map(C=>{const N=BN(C,v),D=y.has(C.id),I=N.length===0;return a.jsxs("label",{className:`studio-tool-option session-environment-option is-workspace${D?" is-selected":""}${I?" is-disabled":""}`,children:[a.jsx("span",{className:"studio-tool-option-icon",children:a.jsx(xLe,{})}),a.jsxs("span",{className:"studio-tool-option-copy",children:[a.jsx("strong",{children:C.name}),a.jsx("span",{children:C.description||c("sessionEnvironment.reuseAll")}),a.jsx("small",{children:c("sessionEnvironment.availableEnvironmentCount",{count:N.length})})]}),a.jsx("input",{type:"checkbox",checked:D,disabled:I,"aria-label":c("sessionEnvironment.selectWorkspace",{name:C.name}),onChange:()=>T(C)}),a.jsx("span",{className:"session-environment-check","aria-hidden":"true",children:a.jsx(ete,{})})]},C.id)})]}),A.length>0&&a.jsxs("section",{className:"session-environment-picker__group","aria-labelledby":`${b}-environments`,children:[a.jsx("h3",{id:`${b}-environments`,children:c("sessionEnvironment.environments")}),A.map(C=>{const N=mE(C);if(!N)return null;const D=t.filter(M=>y.has(M.id)&&M.environmentIds.includes(C.id)),I=D.length>0,P=S.has(Rc(N));return a.jsxs("label",{className:`studio-tool-option session-environment-option${P?" is-selected":""}${I?" is-covered":""}`,children:[a.jsx("span",{className:"studio-tool-option-icon",children:a.jsx(XB,{})}),a.jsxs("span",{className:"studio-tool-option-copy",children:[a.jsx("strong",{children:C.name}),a.jsx("span",{children:I?c("sessionEnvironment.includedByWorkspaces",{names:D.map(M=>M.name).join(c("sessionEnvironment.nameSeparator"))}):C.description||Vp(C.language)}),a.jsxs("small",{children:[Vp(C.language)," · ",N.environment_version_id]})]}),a.jsx("input",{type:"checkbox",checked:P,disabled:I,"aria-label":c("sessionEnvironment.selectEnvironment",{name:C.name}),onChange:()=>j(C)}),a.jsx("span",{className:"session-environment-check","aria-hidden":"true",children:a.jsx(ete,{})})]},Rc(N))})]})]})})]}),a.jsxs("footer",{className:"session-environment-dialog__footer",children:[a.jsx("span",{className:m?"is-error":"",role:m?"alert":void 0,children:m||c("sessionEnvironment.selectionSummary",{workspaces:c("sessionEnvironment.selectedWorkspaceCount",{count:y.size}),environments:c("sessionEnvironment.coveredEnvironmentCount",{count:S.size})})}),a.jsxs("div",{children:[a.jsx("button",{type:"button",disabled:f,onClick:l,children:c("sessionEnvironment.cancel")}),a.jsx("button",{type:"button",className:"is-primary",disabled:r||f||!!s,onClick:()=>void R(),children:c(f?"sessionEnvironment.mounting":"sessionEnvironment.confirm")})]})]})]})]}),document.body)}function kvt({environments:e,workspaces:t,value:n,selectedWorkspaceIds:i,loading:r,disabled:s=!1,error:o="",onChange:l,onRefresh:c}){const{t:u}=_e("workspaceTools"),[d,f]=p.useState(!1),[h,m]=p.useState(!1),[g,b]=p.useState(""),v=p.useRef(null),y=p.useMemo(()=>new Map(e.flatMap(E=>{const j=mE(E);return j?[[Rc(j),E]]:[]})),[e]),w=p.useMemo(()=>new Map(e.map(E=>[E.id,E])),[e]),x=t.filter(E=>i.includes(E.id)),k=new Set(x.flatMap(E=>E.environmentIds)),O=n.filter(E=>!k.has(E.environment_id)),S=()=>{f(!1),requestAnimationFrame(()=>{var E;return(E=v.current)==null?void 0:E.focus()})},A=async(E,j)=>{if(l){m(!0),b("");try{await l(E,j)}catch(T){b(T instanceof Error?T.message:u("sessionEnvironment.mountFailed"))}finally{m(!1)}}};return a.jsxs("div",{className:"session-environment-select",children:[n.length>0&&a.jsxs("div",{className:"session-environment-list",role:"list","aria-label":u("sessionEnvironment.mountedAria"),children:[x.map(E=>{const j=new Set(BN(E,w).map(T=>T.environment_id));return a.jsxs("div",{className:"session-environment-item is-workspace",role:"listitem",children:[a.jsx("span",{className:"session-environment-item__icon",children:a.jsx(xLe,{})}),a.jsxs("span",{className:"session-environment-item__copy",children:[a.jsx("strong",{children:E.name}),a.jsx("small",{children:u("sessionEnvironment.environmentCount",{count:j.size})})]}),l&&a.jsx("button",{type:"button",className:"topo-remove-capability","aria-label":u("sessionEnvironment.removeWorkspace",{name:E.name}),title:u("sessionEnvironment.remove"),disabled:s||h,onClick:()=>{const T=i.filter(C=>C!==E.id),R=new Set(t.filter(C=>T.includes(C.id)).flatMap(C=>C.environmentIds));A(n.filter(C=>!j.has(C.environment_id)||R.has(C.environment_id)),T)},children:a.jsx(Jee,{})})]},`workspace:${E.id}`)}),O.map(E=>{const j=y.get(Rc(E));return a.jsxs("div",{className:"session-environment-item",role:"listitem",children:[a.jsx("span",{className:"session-environment-item__icon",children:a.jsx(XB,{})}),a.jsxs("span",{className:"session-environment-item__copy",children:[a.jsx("strong",{children:(j==null?void 0:j.name)??E.environment_id}),a.jsx("small",{children:j?Vp(j.language):E.environment_version_id})]}),l&&a.jsx("button",{type:"button",className:"topo-remove-capability","aria-label":u("sessionEnvironment.removeEnvironment",{name:(j==null?void 0:j.name)??E.environment_id}),title:u("sessionEnvironment.remove"),disabled:s||h,onClick:()=>void A(n.filter(T=>Rc(T)!==Rc(E)),[...i]),children:a.jsx(Jee,{})})]},Rc(E))})]}),l&&a.jsxs("button",{ref:v,type:"button",className:"topo-capability-add-slot","aria-label":u("sessionEnvironment.add"),disabled:s||r||h,onClick:()=>{b(""),f(!0),c==null||c()},children:[a.jsx(xvt,{}),a.jsx("span",{children:n.length>0?u("sessionEnvironment.addMore"):u("sessionEnvironment.addForSession")})]}),g&&a.jsx("p",{className:"is-error",role:"alert",children:g}),(r||o||e.length===0)&&a.jsx("p",{className:o?"is-error":void 0,role:o?"alert":void 0,children:r?u("sessionEnvironment.loadingAvailable"):o||u("sessionEnvironment.empty")}),d&&a.jsx(wvt,{environments:e,workspaces:t,value:n,selectedWorkspaceIds:i,loading:r,error:o,onConfirm:(E,j)=>l==null?void 0:l(E,j),onClose:S})]})}function Svt(e){return[...new Map(e.filter(t=>t.name.trim()).map(t=>[t.name.trim(),{...t,name:t.name.trim()}])).values()]}function k4({title:e,count:t}){const{t:n}=_e("workspaceTools");return a.jsxs("div",{className:"topo-module-title",children:[a.jsx("span",{className:"topo-module-label",title:e,children:e}),t!==void 0&&a.jsx("span",{className:"topo-section-count","aria-label":n("agentTopology.itemCount",{count:t}),children:t})]})}function Ovt({onEditAgentsMd:e,info:t,loading:n,boundSkills:i,onRefresh:r,onOpenSkill:s,variant:o="rail",selectedSessionSkills:l=[],onSessionSkillsChange:c,environments:u=[],workspaces:d=[],selectedEnvironments:f=[],selectedEnvironmentWorkspaceIds:h=[],environmentsLoading:m=!1,environmentsDisabled:g=!1,environmentsError:b="",onEnvironmentsChange:v,onEnvironmentsRefresh:y}){var C,N,D,I,P;const{t:w}=_e("workspaceTools"),[x,k]=p.useState(null);if(n&&!t)return a.jsx("aside",{className:`topo is-loading${o==="drawer"?" is-drawer":""}`,"aria-label":w("agentTopology.info"),"aria-live":"polite",children:a.jsx(Yt,{as:"span",className:"topo-loading-label",duration:2.2,children:w("agentTopology.loadingInfo")})});if(!t)return null;const O=_H(t.model),S=t.agentCategory==="mpa",A=((C=t.mpa)==null?void 0:C.agentsMdStatus)??"unsupported",E=S?((N=t.mpa)==null?void 0:N.agentsMd)??"":((D=t.graph)==null?void 0:D.instruction)??((I=t.draft)==null?void 0:I.instruction)??"",j=S?(i==null?void 0:i.skills)??[]:Svt([...t.skills,...l.map(M=>({name:M.name,description:M.description??""}))]),T=i==null?void 0:i.error,R=T==="forbidden"?"accessDenied":T==="unsupported"?"skillsUnsupported":T==="degraded"?"skillsDegraded":"loadFailed";return a.jsx(a.Fragment,{children:a.jsxs("aside",{className:`topo${o==="drawer"?" is-drawer":""}`,"aria-label":w("agentTopology.infoAndTopology"),children:[a.jsxs("section",{className:"topo-agent-card","aria-label":w("agentTopology.info"),children:[a.jsxs("div",{className:"topo-agent-heading",children:[a.jsx("h2",{title:t.name,children:t.name||w("agentTopology.unnamedAgent")}),O&&a.jsx("span",{title:O,children:O})]}),t.description&&a.jsx("p",{className:"topo-description",title:t.description,children:t.description}),r&&a.jsx("button",{type:"button",className:"topo-refresh",onClick:r,disabled:n||(i==null?void 0:i.loading),children:w("agentTopology.refresh")})]}),a.jsxs("div",{className:"topo-module-stack",children:[a.jsxs("section",{className:"topo-module-card topo-agents-md-card","aria-label":w("agentTopology.agentsMd"),children:[a.jsx(k4,{title:w("agentTopology.agentsMd")}),S&&e&&a.jsx("button",{type:"button",className:"topo-refresh",onClick:e,children:w("agentTopology.editAgentsMd")}),a.jsx("div",{className:"topo-module-scroll topo-agents-md-scroll",role:"region","aria-label":w("agentTopology.agentsMd"),tabIndex:0,children:S&&A!=="ready"?a.jsx("div",{className:"topo-data-error",role:"status",children:w(`agentTopology.${A==="forbidden"?"accessDenied":A==="unsupported"?"documentUnsupported":"loadFailed"}`)}):E.trim()?a.jsx("pre",{className:"topo-agents-md-content",children:E}):a.jsx("div",{className:"topo-empty",children:w("agentTopology.notConfigured")})})]}),a.jsxs("section",{className:"topo-module-card topo-skills-card","aria-label":w("agentTopology.skills"),children:[a.jsx(k4,{title:w("agentTopology.skills"),count:S?i!=null&&i.complete?j.length:void 0:t.skillsPreviewSupported?j.length:void 0}),a.jsxs("div",{className:"topo-module-scroll topo-skills-scroll",role:"region","aria-label":w("agentTopology.skillList"),tabIndex:0,children:[S&&(i!=null&&i.loading)&&!j.length?a.jsx(Yt,{as:"span",children:w("agentTopology.loadingSkills")}):!S&&!t.skillsPreviewSupported?a.jsx("div",{className:"topo-empty",children:w("agentTopology.previewUnsupported")}):j.length>0?a.jsx("div",{className:"topo-skill-list",children:j.map((M,_)=>{var F;return a.jsxs("div",{className:"topo-skill",title:M.description||M.name,children:[a.jsx("div",{className:"topo-skill-title",children:S&&s&&((F=i==null?void 0:i.skills[_])!=null&&F.skillId)&&!i.skills[_].lookupByName?a.jsx("button",{type:"button",className:"topo-skill-name topo-skill-open",onClick:()=>s(_),children:M.name}):a.jsx("span",{className:"topo-skill-name",children:M.name})}),M.description&&a.jsx("span",{className:"topo-skill-description",children:M.description})]},`${M.name}:${M.description}:${_}`)})}):T?null:a.jsx("div",{className:"topo-empty",children:w(S?(P=t.mpa)!=null&&P.skillSpaces.length?"agentTopology.noBoundSkills":"agentTopology.noBoundSpace":"agentTopology.notConfigured")}),T&&a.jsx("div",{className:"topo-data-error",role:"status",children:w(`agentTopology.${R}`)}),S&&(i==null?void 0:i.loading)&&j.length>0&&a.jsx("span",{role:"status",children:w("agentTopology.loadingSkills")})]}),!S&&c&&a.jsx("div",{className:"topo-capability-add-dock",children:a.jsxs("button",{type:"button",className:"topo-capability-add-slot","aria-label":w("agentTopology.addSkill"),disabled:g,onClick:()=>k("skill"),children:[a.jsx("span",{"aria-hidden":"true",children:"+"}),a.jsx("span",{children:w("agentTopology.addSkillHere")})]})})]}),(v||f.length>0)&&a.jsxs("section",{className:"topo-module-card topo-environment-card","aria-label":w("agentTopology.sessionEnvironment"),children:[a.jsx(k4,{title:w("agentTopology.environment"),count:f.length}),a.jsx(kvt,{environments:u,workspaces:d,value:f,selectedWorkspaceIds:h,loading:m,disabled:g,error:b,onChange:v,onRefresh:y})]})]}),x==="skill"&&c&&bi.createPortal(a.jsxs("div",{className:"studio-tool-dialog-layer",children:[a.jsx("button",{type:"button",className:"studio-tool-dialog-scrim","aria-label":w("agentTopology.close"),onClick:()=>k(null)}),a.jsxs("section",{className:"studio-tool-dialog",role:"dialog","aria-modal":"true",children:[a.jsxs("header",{className:"studio-tool-dialog-head is-iconless",children:[a.jsxs("div",{children:[a.jsx("h2",{children:w("agentTopology.addSkill")}),a.jsx("p",{children:w("agentTopology.skillMountNextTurn")})]}),a.jsx("button",{type:"button",className:"studio-tool-dialog-close","aria-label":w("agentTopology.close"),onClick:()=>k(null),children:a.jsx(Do,{"aria-hidden":"true"})})]}),a.jsx("div",{className:"studio-tool-dialog-body",children:a.jsx(cLe,{selected:[...l],onChange:c})})]})]}),document.body)]})})}const wLe=p.createContext(void 0);function Db(e){const t=p.useContext(wLe);if(!e&&t===void 0)throw new Error(Xc(27));return t}const Mb=p.forwardRef(function(t,n){const{render:i,className:r,style:s,forceRender:o=!1,...l}=t,c=Db(),u=c.useState("open"),d=c.useState("nested"),f=c.useState("mounted"),h=c.useState("transitionStatus");return La("div",t,{state:{open:u,transitionStatus:h},ref:[c.context.backdropRef,n],stateAttributesMapping:rPe,props:[{role:"presentation",hidden:!f,style:{userSelect:"none",WebkitUserSelect:"none"}},l],enabled:o||!d})}),NM=p.forwardRef(function(t,n){const{render:i,className:r,style:s,disabled:o=!1,nativeButton:l=!0,...c}=t,u=Db(),d=u.useState("open"),{getButtonProps:f,buttonRef:h}=lM({disabled:o,native:l}),m={disabled:o};function g(b){d&&u.setOpen(!1,ga(uIe,b.nativeEvent))}return La("button",t,{state:m,ref:[n,h],props:[{onClick:g},c,f]})});function am(e){return tT(e,"base-ui")}const gT=p.forwardRef(function(t,n){const{render:i,className:r,style:s,id:o,...l}=t,c=Db(),u=am(o);return c.useSyncedValueWithCleanup("descriptionElementId",u),La("p",t,{ref:n,props:[{id:u},l]})}),kLe=p.createContext(void 0);function Evt(){const e=p.useContext(kLe);if(e===void 0)throw new Error(Xc(26));return e}const Cvt="ArrowUp",Avt="ArrowDown",Tvt="ArrowLeft",_vt="ArrowRight",jvt="Home",Nvt="End",SLe=new Set([Cvt,Avt,Tvt,_vt,jvt,Nvt]),Rvt={...jV,...oM,nestedDialogOpen(e){return e?{"data-nested-dialog-open":""}:null}},Lb=p.forwardRef(function(t,n){const{render:i,className:r,style:s,finalFocus:o,initialFocus:l,...c}=t,u=Db(),d=u.useState("descriptionElementId"),f=u.useState("disablePointerDismissal"),h=u.useState("floatingRootContext"),m=u.useState("popupProps"),g=u.useState("modal"),b=u.useState("mounted"),v=u.useState("nested"),y=u.useState("nestedOpenDialogCount"),w=u.useState("open"),x=u.useState("openMethod"),k=u.useState("titleElementId"),O=u.useState("transitionStatus"),S=u.useState("role"),A=h.useState("floatingId");Evt(),eT({open:w,ref:u.context.popupRef,onComplete(){var N,D;w&&((D=(N=u.context).onOpenChangeComplete)==null||D.call(N,!0))}});const E=l===void 0?BIe(u.context.popupRef):l,j=y>0,T=u.useStateSetter("popupElement"),C=La("div",t,{state:{open:w,nested:v,transitionStatus:O,nestedDialogOpen:j},props:[m,{id:A,"aria-labelledby":k,"aria-describedby":d,role:S,...FIe,hidden:!b,onKeyDown(N){SLe.has(N.key)&&N.stopPropagation()},style:{"--nested-dialogs":y}},c],ref:[n,u.context.popupRef,T],stateAttributesMapping:Rvt});return a.jsx(kIe,{context:h,openInteractionType:x,disabled:!b,closeOnFocusOut:!f,initialFocus:E,returnFocus:o,modal:g!==!1,restoreFocus:"popup",children:C})}),OLe=p.forwardRef(function(t,n){const{cutout:i,...r}=t;let s;if(i){const o=i.getBoundingClientRect();s=`polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${o.left}px ${o.top}px,${o.left}px ${o.bottom}px,${o.right}px ${o.bottom}px,${o.right}px ${o.top}px,${o.left}px ${o.top}px)`}return a.jsx("div",{ref:n,role:"presentation","data-base-ui-inert":"",...r,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:s}})}),$b=p.forwardRef(function(t,n){const{keepMounted:i=!1,...r}=t,s=Db(),o=s.useState("mounted"),l=s.useState("modal"),c=s.useState("open");return o||i?a.jsx(kLe.Provider,{value:i,children:a.jsxs(gIe,{ref:n,...r,children:[o&&l===!0&&a.jsx(OLe,{ref:s.context.internalBackdropRef,inert:wV(!c)}),t.children]})}):null});let tte={},nte={},ite="";function RM(e,t){return ZA(e)?e:t}function rte(e,t,n){return/hidden|clip/.test(e.getComputedStyle(RM(t,n)).overflowY)}function Ivt(e){if(typeof document>"u")return!1;const t=Ar(e);return na(t).innerWidth-t.documentElement.clientWidth>0}function Pvt(e){if(!(typeof CSS<"u"&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||typeof document>"u")return!1;const n=Ar(e),i=n.documentElement,r=n.body,s=RM(i,r),o=s.style.overflowY,l=i.style.scrollbarGutter;i.style.scrollbarGutter="stable",s.style.overflowY="scroll";const c=s.offsetWidth;s.style.overflowY="hidden";const u=s.offsetWidth;return s.style.overflowY=o,i.style.scrollbarGutter=l,c===u}function Dvt(e){const t=Ar(e),n=t.documentElement,i=t.body,r=RM(n,i),s={overflowY:r.style.overflowY,overflowX:r.style.overflowX};return Object.assign(r.style,{overflowY:"hidden",overflowX:"hidden"}),()=>{Object.assign(r.style,s)}}function Mvt(e){var m;const t=Ar(e),n=t.documentElement,i=t.body,r=na(n);let s=0,o=0,l=!1;const c=Dc.create();if(ek&&(((m=r.visualViewport)==null?void 0:m.scale)??1)!==1)return()=>{};function u(){const g=r.getComputedStyle(n),b=r.getComputedStyle(i),w=(g.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";s=n.scrollTop,o=n.scrollLeft,tte={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},ite=n.style.scrollBehavior,nte={position:i.style.position,height:i.style.height,width:i.style.width,boxSizing:i.style.boxSizing,overflowY:i.style.overflowY,overflowX:i.style.overflowX,scrollBehavior:i.style.scrollBehavior};const x=n.scrollHeight>n.clientHeight,k=n.scrollWidth>n.clientWidth,O=g.overflowY==="scroll"||b.overflowY==="scroll",S=g.overflowX==="scroll"||b.overflowX==="scroll",A=Math.max(0,r.innerWidth-i.clientWidth),E=Math.max(0,r.innerHeight-i.clientHeight),j=parseFloat(b.marginTop)+parseFloat(b.marginBottom),T=parseFloat(b.marginLeft)+parseFloat(b.marginRight),R=RM(n,i);if(l=Pvt(e),l){n.style.scrollbarGutter=w,R.style.overflowY="hidden",R.style.overflowX="hidden";return}Object.assign(n.style,{scrollbarGutter:w,overflowY:"hidden",overflowX:"hidden"}),(x||O)&&(n.style.overflowY="scroll"),(k||S)&&(n.style.overflowX="scroll"),Object.assign(i.style,{position:"relative",height:j||E?`calc(100dvh - ${j+E}px)`:"100dvh",width:T||A?`calc(100vw - ${T+A}px)`:"100vw",boxSizing:"border-box",overflowY:"hidden",overflowX:"hidden",scrollBehavior:"unset"}),i.scrollTop=s,i.scrollLeft=o,n.setAttribute("data-base-ui-scroll-locked",""),n.style.scrollBehavior="unset"}function d(){Object.assign(n.style,tte),Object.assign(i.style,nte),l||(n.scrollTop=s,n.scrollLeft=o,n.removeAttribute("data-base-ui-scroll-locked"),n.style.scrollBehavior=ite)}function f(){d(),c.request(u)}u();const h=_i(r,"resize",f);return()=>{c.cancel(),d(),typeof r.removeEventListener=="function"&&h()}}class Lvt{constructor(){en(this,"lockCount",0);en(this,"restore",null);en(this,"timeoutLock",Wu.create());en(this,"timeoutUnlock",Wu.create());en(this,"release",()=>{this.lockCount-=1,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)});en(this,"unlock",()=>{var t;this.lockCount===0&&this.restore&&((t=this.restore)==null||t.call(this),this.restore=null)})}acquire(t){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(t)),this.release}lock(t){if(this.lockCount===0||this.restore!==null)return;const n=Ar(t),i=n.documentElement,r=n.body,s=na(i);if(rte(s,i,r)){const l=new s.MutationObserver(()=>{rte(s,i,r)||(l.disconnect(),this.restore=null,this.lock(t))}),c={attributes:!0};l.observe(i,c),l.observe(r,c),this.restore=()=>l.disconnect();return}const o=rM||!Ivt(t);this.restore=o?Dvt(t):Mvt(t)}}const $vt=new Lvt;function ELe(e=!0,t=null){Jn(()=>{if(e)return $vt.acquire(t)},[e,t])}function Fvt({store:e,parentContext:t,isDrawer:n}){const i=e.useState("open"),r=e.useState("disablePointerDismissal"),s=e.useState("modal"),o=e.useState("popupElement"),l=e.useState("floatingRootContext"),[c,u]=p.useState(0),[d,f]=p.useState(0),h=c===0,m=OIe(l,{outsidePressEvent(){return e.context.internalBackdropRef.current||e.context.backdropRef.current?"intentional":{mouse:s==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(g){if(!e.context.outsidePressEnabledRef.current||"button"in g&&g.button!==0)return!1;if("touches"in g){if(g.type==="touchend"){if(g.changedTouches.length!==1||g.touches.length!==0)return!1}else if(g.touches.length!==1)return!1}const b=go(g);if(h&&!r){if(s){const v=e.context.internalBackdropRef.current,y=e.context.backdropRef.current;return v||y?v===b||y===b||ti(b,o)&&!(b!=null&&b.hasAttribute("data-base-ui-portal")):!0}return!0}return!1},escapeKey:h});return ELe(i&&s===!0,o),e.useContextCallback("onNestedDialogOpen",(g,b)=>{u(g),f(b)}),Jn(()=>(t!=null&&t.onNestedDialogOpen&&(i?t.onNestedDialogOpen(c+1,d+(n?1:0)):t.onNestedDialogOpen(0,0)),()=>{t!=null&&t.onNestedDialogOpen&&i&&t.onNestedDialogOpen(0,0)}),[n,i,c,d,t]),WIe(e,{activeTriggerProps:m.reference,inactiveTriggerProps:m.trigger,popupProps:m.floating,nestedOpenDialogCount:c,nestedOpenDrawerCount:d}),null}const Bvt={...ZIe,modal:e=>e.modal,nested:e=>e.nested,nestedOpenDialogCount:e=>e.nestedOpenDialogCount,nestedOpenDrawerCount:e=>e.nestedOpenDrawerCount,disablePointerDismissal:e=>e.disablePointerDismissal,openMethod:e=>e.openMethod,descriptionElementId:e=>e.descriptionElementId,titleElementId:e=>e.titleElementId,viewportElement:e=>e.viewportElement,role:e=>e.role};class Uvt extends JD{constructor(n,i,r){const s=new AV,o=Qvt(n,s,i,r);super(o,zvt(s),Bvt);en(this,"setOpen",(n,i)=>{var s,o;if(i.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!n&&i.trigger==null&&this.state.activeTriggerId!=null&&(i.trigger=this.state.activeTriggerElement??void 0),(o=(s=this.context).onOpenChange)==null||o.call(s,n,i),i.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(n,i);const r={open:n};zIe(r,n,i.trigger),this.update(r)})}}function Qvt(e,t,n,i=!1){const r={...GIe(),modal:!0,disablePointerDismissal:!1,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...e};return r.floatingRootContext=XIe(t,n,i),r}function zvt(e){return{popupRef:p.createRef(),backdropRef:p.createRef(),internalBackdropRef:p.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0}}function Vvt(e,t){const{children:n,open:i,defaultOpen:r=!1,onOpenChange:s,onOpenChangeComplete:o,disablePointerDismissal:l=!1,modal:c=!0,actionsRef:u,handle:d,triggerId:f,defaultTriggerId:h=null}=t,m=e==="drawer",g=c,b=l,v="dialog",y=Db(!0),w=y!=null,x={modal:g,disablePointerDismissal:b,nested:w,role:v},k=UIe((T,R)=>new Uvt({open:r,openProp:i,activeTriggerId:h,triggerIdProp:f,...x},T,R),!0);k.useControlledProp("openProp",i),k.useControlledProp("triggerIdProp",f),k.useSyncedValues(x),k.useContextCallback("onOpenChange",s),k.useContextCallback("onOpenChangeComplete",o);const O=k.useState("open"),S=k.useState("mounted"),A=k.useState("payload");KIe(k,O),HIe(k);const{forceUnmount:E}=qIe(O,k);p.useImperativeHandle(u,()=>({unmount:E,close:()=>k.setOpen(!1,ga(fIe))}),[E,k]);const j=O||S;return a.jsxs(wLe.Provider,{value:k,children:[d&&a.jsx(QIe,{handle:d,store:k}),j&&a.jsx(Fvt,{store:k,parentContext:y==null?void 0:y.context,isDrawer:m}),typeof n=="function"?n({payload:A}):n]})}function Fb(e){return Vvt("dialog",e)}const o0=p.forwardRef(function(t,n){const{render:i,className:r,style:s,id:o,...l}=t,c=Db(),u=am(o);return c.useSyncedValueWithCleanup("titleElementId",u),La("h2",t,{ref:n,props:[{id:u},l]})});function Hvt(e){const t=p.useRef(""),n=p.useCallback(r=>{r.defaultPrevented||(t.current=r.pointerType,e(r,r.pointerType))},[e]);return{onClick:p.useCallback(r=>{if(r.detail===0){e(r,"keyboard");return}"pointerType"in r?e(r,r.pointerType):e(r,t.current),t.current=""},[e]),onPointerDown:n}}function CLe(e,t){const n=ai((s,o)=>{(typeof e=="function"?e():e)||t(o||(rM?"touch":""))}),{onClick:i,onPointerDown:r}=Hvt(n);return p.useMemo(()=>({onClick:i,onPointerDown:r}),[i,r])}const ALe=p.forwardRef(function(t,n){const{render:i,className:r,style:s,disabled:o=!1,nativeButton:l=!0,id:c,payload:u,handle:d,...f}=t,h=Db(!0),g=JIe(d)??h;if(!g)throw new Error(Xc(79));const b=am(c),v=g.useState("floatingRootContext"),y=g.useState("isOpenedByTrigger",b),w=g.useState("triggerPopupId",b),x=p.useRef(null),{registerTrigger:k,isMountedByThisTrigger:O}=VIe(b,x,g,{payload:u}),{getButtonProps:S,buttonRef:A}=lM({disabled:o,native:l}),E=SIe(v),j=CLe(()=>g.select("open"),C=>{g.set("openMethod",C)}),T={disabled:o,open:y},R=g.useState("triggerProps",O);return La("button",t,{state:T,ref:[A,n,k,x],props:[E.reference,R,j,{[SV]:"",id:b,"aria-haspopup":"dialog","aria-expanded":y,"aria-controls":w},f,S],stateAttributesMapping:iPe})}),qvt="data:image/svg+xml,%3csvg%20preserveAspectRatio='none'%20overflow='visible'%20style='display:%20block;'%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='Icon%20Frame'%3e%3cpath%20id='Vector%208798'%20d='M5%205L15%2015'%20stroke='white'%20stroke-opacity='0.15'%20stroke-width='1.25'%20stroke-linecap='round'/%3e%3cpath%20id='Vector%208800'%20d='M15%205L5%2015'%20stroke='white'%20stroke-opacity='0.15'%20stroke-width='1.25'%20stroke-linecap='round'/%3e%3c/g%3e%3c/svg%3e";function PH({title:e,topGlow:t=!0,children:n,footer:i,cancelLabel:r="Cancel",confirmLabel:s="Confirm",closeLabel:o="Close",onClose:l,onCancel:c,onConfirm:u,className:d="",...f}){const h=p.useId();return a.jsxs("div",{role:"dialog","aria-labelledby":h,...f,className:`studio-modal-layout ${t?"studio-modal-layout--glow":""} ${d}`.trim(),children:[a.jsxs("header",{className:"studio-modal-layout__header",children:[a.jsx("h3",{id:h,children:e}),a.jsx(sn,{variant:"ghost",size:"compact",iconOnly:!0,className:"studio-modal-layout__close","aria-label":o,onClick:l,startIcon:a.jsx("img",{src:qvt,alt:""})})]}),a.jsx("div",{className:"studio-modal-layout__body",children:n}),i!==null&&a.jsx("footer",{className:"studio-modal-layout__footer",children:i===void 0?a.jsxs(a.Fragment,{children:[a.jsx(sn,{variant:"outline",className:"studio-modal-layout__cancel",onClick:c,children:r}),a.jsx(sn,{className:"studio-modal-layout__confirm",onClick:u,children:s})]}):i})]})}class DH extends Error{constructor(t){super(`AGENTS.md request failed: ${t}`),this.status=t}}async function ste(e,t,n){const i=await gRe(e.runtimeId,e.region,{signal:t,...n?{method:"POST",body:JSON.stringify(n)}:{}});if(!i.ok)throw new DH(i.status);const r=await i.json();if(typeof r!="object"||r===null||!("content"in r)||!("revision"in r)||typeof r.content!="string"||typeof r.revision!="number"||!Number.isSafeInteger(r.revision)||r.revision<0)throw new Error("Invalid AGENTS.md response");return{content:r.content,revision:r.revision}}function Wvt({target:e,onClose:t,onSaved:n}){const{t:i}=_e("workspaceTools"),[r,s]=p.useState(null),[o,l]=p.useState(""),[c,u]=p.useState(!0),[d,f]=p.useState(!1),[h,m]=p.useState(""),[g,b]=p.useState(0),[v,y]=p.useState(!1),[w,x]=p.useState(null),k=p.useRef(null),O=p.useRef(!1),S=r!==null&&o!==r.content;p.useEffect(()=>{const T=new AbortController;return u(!0),m(""),ste(e,T.signal).then(R=>{T.signal.aborted||(s(R),l(R.content),y(!1))}).catch(R=>{T.signal.aborted||m(ate(R,!1))}).finally(()=>{T.signal.aborted||u(!1)}),()=>T.abort()},[e.runtimeId,e.region,g]),p.useEffect(()=>()=>{var T;return(T=k.current)==null?void 0:T.abort()},[]);function A(){k.current||O.current||(S?x("close"):t())}async function E(T=!1){if(k.current||O.current||!r||!S||v||c||o.length>4e4)return;if(!o&&!T){x("clear");return}const R=new AbortController;k.current=R,f(!0),m("");try{await ste(e,R.signal,{content:o,revision:r.revision}),R.signal.aborted||(n(),t())}catch(C){if(!R.signal.aborted){const N=!(C instanceof DH)||C.status>=500;y(N),m(N?"agentsMdSaveUncertain":ate(C,!0))}}finally{k.current===R&&(k.current=null),R.signal.aborted||f(!1)}}function j(){const T=w;x(null),T==="close"?t():T==="reload"?b(R=>R+1):T==="clear"&&E(!0)}return a.jsx(Fb,{open:!0,onOpenChange:T=>{T||A()},children:a.jsxs($b,{children:[a.jsx(Mb,{className:"studio-modal-button__backdrop"}),a.jsx(Lb,{className:"studio-modal-button__popup",render:a.jsx(PH,{title:a.jsx(o0,{render:a.jsx("span",{}),children:"AGENTS.md"}),topGlow:!1,onClose:A,closeLabel:i("agentTopology.close"),footer:a.jsxs(a.Fragment,{children:[h&&a.jsx(sn,{variant:"outline",disabled:d||c,onClick:()=>S?x("reload"):b(T=>T+1),children:i("agentTopology.refresh")}),a.jsx(sn,{variant:"outline",disabled:d,onClick:A,children:i("agentTopology.close")}),a.jsx(sn,{loading:d,disabled:!r||!S||c||v||o.length>4e4,onClick:()=>void E(),children:i("agentTopology.saveAgentsMd")})]}),children:a.jsx(Fd,{className:"studio-modal-button__body",children:a.jsxs("div",{className:"mpa-agents-md-editor-body",children:[a.jsx("p",{children:i("agentTopology.agentsMdEditHint")}),c?a.jsx(Yt,{as:"p",children:i("agentTopology.agentsMdLoading")}):r&&a.jsx(_M,{"aria-label":"AGENTS.md",value:o,disabled:d,rows:9,spellCheck:!1,maxLength:4e4,onCompositionStart:()=>{O.current=!0},onCompositionEnd:()=>{O.current=!1},onChange:T=>{l(T.currentTarget.value),x(null)}}),o.length>4e4&&a.jsx("p",{role:"alert",children:i("agentTopology.agentsMdTooLong")}),h&&a.jsx("p",{role:"alert",children:i(`agentTopology.${h}`)}),w&&a.jsxs("div",{role:"alert",children:[a.jsx("p",{children:i(`agentTopology.${w==="clear"?"agentsMdClearConfirm":"discardDocument"}`)}),a.jsxs("div",{className:"mpa-agents-md-confirm-actions",children:[a.jsx(sn,{variant:"outline",onClick:()=>x(null),children:i("agentTopology.keepEditing")}),a.jsx(sn,{onClick:j,children:i("agentTopology.confirmDocument")})]})]})]})})})})]})})}function ate(e,t){if(e instanceof DH){if([401,403].includes(e.status))return"accessDenied";if([404,405,501].includes(e.status))return"agentsMdEditUnsupported";if(e.status===409)return"agentsMdConflict";if(e.status===422)return"agentsMdTooLong"}return t?"documentSaveFailed":"agentsMdLoadFailed"}function Kvt(e){var i;if(((i=e.info)==null?void 0:i.agentCategory)!=="mpa")return null;const t=e.info.mpa,n=JSON.stringify([e.agentsMdTarget,t==null?void 0:t.skillSpacesStatus,t==null?void 0:t.skillSpaces]);return a.jsx(Gvt,{...e,info:e.info},n)}function Gvt(e){const[t,n]=p.useState(!1),[i,r]=p.useState(null),[s,o]=p.useState(0),[l,c]=p.useState({skills:[],loading:!0,complete:!1}),u=e.info.mpa;return p.useEffect(()=>{const d=new AbortController;if((u==null?void 0:u.skillSpacesStatus)!=="ready")return c({skills:[],loading:!1,complete:!1,error:(u==null?void 0:u.skillSpacesStatus)??"unsupported"}),()=>d.abort();c(h=>({...h,loading:!0,error:void 0}));const f=new Map;return(async()=>{let h=!1;for(const m of u.skillSpaces){let g=0;for(let b=1;;b++){if(b>100)throw new Error("Skill pagination limit reached");const v=await oLe(m.id,{region:m.region,page:b,pageSize:100,signal:d.signal});if(d.signal.aborted)return;if(!Array.isArray(v.items)||!Number.isInteger(v.totalCount)||v.totalCount<0)throw new Error("Invalid SkillSpace page");const y=f.size;for(const w of v.items){if(typeof w.skillName!="string"||!w.skillName.trim())throw new Error("Invalid skill name");f.set(`${m.region}:${m.id}:${w.skillId||w.skillName}`,{spaceId:m.id,region:m.region,skillId:w.skillId,version:w.version,lookupByName:w.lookupByName,name:w.skillName,description:w.skillDescription||""})}if(g+=v.items.length,h||(h=v.degraded===!0),c({skills:[...f.values()],loading:!0,complete:!1}),g>=v.totalCount)break;if(!v.items.length||f.size===y)throw new Error("Skill pagination made no progress")}}d.signal.aborted||c({skills:[...f.values()],loading:!1,complete:!h,error:h?"degraded":void 0})})().catch(h=>{if(d.signal.aborted)return;const m=h instanceof c1&&[401,403].includes(h.status);c(g=>({skills:m?[]:f.size?[...f.values()]:g.skills,loading:!1,complete:!1,error:m?"forbidden":"error"}))}),()=>d.abort()},[u,s]),a.jsxs(a.Fragment,{children:[a.jsx(Ovt,{...e,boundSkills:l,onEditAgentsMd:e.agentsMdTarget?()=>n(!0):void 0,onOpenSkill:d=>r(l.skills[d]),onRefresh:()=>{e.onRefresh?e.onRefresh():o(d=>d+1)}}),t&&e.agentsMdTarget&&a.jsx(Wvt,{target:e.agentsMdTarget,onClose:()=>n(!1),onSaved:()=>{var d;return(d=e.onRefresh)==null?void 0:d.call(e)}}),i&&a.jsx(Fyt,{target:i,onClose:()=>r(null),onSaved:()=>o(d=>d+1)})]})}const bT={viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.75,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0};function ote(e){return a.jsxs("svg",{...bT,...e,children:[a.jsx("rect",{x:"3.75",y:"5.25",width:"16.5",height:"13.5",rx:"2"}),a.jsx("path",{d:"m10.25 9 4.8 3-4.8 3V9Z"})]})}function Xvt(e){return a.jsxs("svg",{...bT,...e,children:[a.jsx("path",{d:"M12 3.75v10.5M8.4 10.8 12 14.4l3.6-3.6"}),a.jsx("path",{d:"M5 17.25v2h14v-2"})]})}function Yvt(e){return a.jsxs("svg",{...bT,...e,children:[a.jsx("path",{d:"M8.75 8.75 6.9 10.6a3.4 3.4 0 0 0 4.8 4.8l1.85-1.85"}),a.jsx("path",{d:"m15.25 15.25 1.85-1.85a3.4 3.4 0 0 0-4.8-4.8l-1.85 1.85"}),a.jsx("path",{d:"m9.4 14.6 5.2-5.2"})]})}function PI(e){return a.jsxs("svg",{...bT,...e,children:[a.jsx("path",{d:"M5 19h3.2L18.6 8.6a1.7 1.7 0 0 0 0-2.4l-.8-.8a1.7 1.7 0 0 0-2.4 0L5 15.8V19Z"}),a.jsx("path",{d:"m13.9 6.9 3.2 3.2M5 15.8 8.2 19"})]})}function TLe(e){return a.jsx("svg",{...bT,...e,children:a.jsx("path",{d:"m6.5 6.5 11 11M17.5 6.5l-11 11"})})}const Zvt=180,lte=500,S4=10,cte=32;function Jvt(e){return Array.from(new Set(e.split(/[,,]/).map(t=>t.trim()).filter(Boolean)))}function e0t({artifact:e,busy:t,error:n,onClose:i,onSave:r}){const{t:s}=_e("workspaceTools"),[o,l]=p.useState(e.name),[c,u]=p.useState(e.description??""),[d,f]=p.useState((e.tags??[]).join(",")),[h,m]=p.useState(""),g=p.useId(),b=p.useId(),v=p.useRef(null),y=p.useRef(null),w=p.useRef(t),x=p.useRef(i);p.useEffect(()=>{w.current=t,x.current=i},[t,i]),p.useEffect(()=>{var j,T;const S=document.body.style.overflow,A=document.activeElement instanceof HTMLElement?document.activeElement:null;document.body.style.overflow="hidden",(j=y.current)==null||j.focus(),(T=y.current)==null||T.select();const E=R=>{if(R.key==="Escape"&&!w.current){R.preventDefault(),x.current();return}if(R.key!=="Tab")return;const C=v.current;if(!C)return;const N=Array.from(C.querySelectorAll('button:not([disabled]), input:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')).filter(P=>P.getClientRects().length>0);if(N.length===0){R.preventDefault();return}const D=N[0],I=N[N.length-1];R.shiftKey&&document.activeElement===D?(R.preventDefault(),I.focus()):!R.shiftKey&&document.activeElement===I&&(R.preventDefault(),D.focus())};return window.addEventListener("keydown",E),()=>{window.removeEventListener("keydown",E),document.body.style.overflow=S,A!=null&&A.isConnected&&A.focus()}},[]);const k=S=>{var j;S.preventDefault();const A=o.trim(),E=Jvt(d);if(!A){m(s("artifactEdit.nameRequired")),(j=y.current)==null||j.focus();return}if(E.length>S4){m(s("artifactEdit.tooManyTags",{max:S4}));return}if(E.some(T=>T.length>cte)){m(s("artifactEdit.tagTooLong",{max:cte}));return}m(""),r({name:A,description:c.trim(),tags:E})},O=h||n;return bi.createPortal(a.jsx("div",{className:"artifact-edit-backdrop",onMouseDown:S=>{S.target===S.currentTarget&&!t&&i()},children:a.jsxs("section",{ref:v,className:"artifact-edit-dialog",role:"dialog","aria-modal":"true","aria-labelledby":g,"aria-describedby":b,"aria-busy":t||void 0,children:[a.jsxs("header",{className:"artifact-edit-dialog__header",children:[a.jsxs("div",{children:[a.jsx("h2",{id:g,children:s("artifactEdit.title")}),a.jsx("p",{id:b,children:s("artifactEdit.subtitle")})]}),a.jsx("button",{type:"button",onClick:i,disabled:t,"aria-label":s("artifactEdit.close"),children:a.jsx(TLe,{})})]}),a.jsxs("form",{onSubmit:k,children:[a.jsxs("div",{className:"artifact-edit-dialog__body",children:[a.jsxs("label",{className:"artifact-edit-field",children:[a.jsx("span",{children:s("artifactEdit.name")}),a.jsx("input",{ref:y,value:o,maxLength:Zvt,disabled:t,"aria-invalid":!!O||void 0,onChange:S=>{l(S.target.value),m("")}})]}),a.jsxs("label",{className:"artifact-edit-field",children:[a.jsx("span",{children:s("artifactEdit.description")}),a.jsx("textarea",{value:c,maxLength:lte,disabled:t,rows:4,placeholder:s("artifactEdit.descriptionPlaceholder"),onChange:S=>u(S.target.value)}),a.jsxs("small",{children:[c.length,"/",lte]})]}),a.jsxs("label",{className:"artifact-edit-field",children:[a.jsx("span",{children:s("artifactEdit.tags")}),a.jsx("input",{value:d,disabled:t,placeholder:s("artifactEdit.tagsPlaceholder",{max:S4}),onChange:S=>{f(S.target.value),m("")}})]}),O?a.jsx("div",{className:"artifact-edit-error",role:"alert",children:O}):null]}),a.jsxs("footer",{className:"artifact-edit-dialog__actions",children:[a.jsx("button",{type:"button",onClick:i,disabled:t,children:s("artifactEdit.cancel")}),a.jsx("button",{type:"submit",className:"is-primary",disabled:t,children:s(t?"artifactEdit.saving":"artifactEdit.save")})]})]})]})}),document.body)}function _Le({label:e,menuLabel:t,items:n,placement:i="bottom-end"}){return a.jsxs(tr,{children:[a.jsx(tr.Trigger,{children:a.jsx(Tt,{type:"button",color:"secondary",variant:"ghost",size:"md",iconSize:"sm",uniform:!0,"aria-label":e,title:e,disabled:n.length===0,children:a.jsx(Hct,{"aria-hidden":"true"})})}),a.jsxs(tr.Content,{side:i==="top-end"?"top":"bottom",align:"end",minWidth:148,children:[a.jsx("span",{className:"sr-only",children:t}),n.map(r=>a.jsx(tr.Item,{disabled:r.disabled,onSelect:r.onSelect,children:a.jsx("span",{title:r.title,children:r.label})},r.label))]})]})}const t0t="_Alert_1tr02_1",n0t="_Content_1tr02_145",i0t="_Indicator_1tr02_156",r0t="_Message_1tr02_159",s0t="_Title_1tr02_162",a0t="_Description_1tr02_168",o0t="_Actions_1tr02_173",fy={Alert:t0t,Content:n0t,Indicator:i0t,Message:r0t,Title:s0t,Description:a0t,Actions:o0t},Eh=({color:e="primary",variant:t="outline",title:n,description:i,actions:r,actionsPlacement:s,indicator:o,className:l,actionsClassName:c,ref:u,...d})=>{const f=p.useRef(null),h=p.useRef(null),[m,g]=p.useState("end"),{width:b}=FPe({ref:f});return p.useEffect(()=>{var y;const v=((y=h.current)==null?void 0:y.clientWidth)??0;if(v&&b){const w=v>b/3?"bottom":"end";g(w)}},[b]),a.jsxs("div",{ref:dT([u,f]),className:Ui(fy.Alert,l),"data-variant":t,"data-color":e,role:e==="danger"?"alert":void 0,"data-actions-placement":s??m,...d,children:[o===!1?null:a.jsx("div",{className:fy.Indicator,children:o??a.jsx(l0t,{color:e})}),a.jsxs("div",{className:fy.Content,children:[a.jsxs("div",{className:fy.Message,children:[n&&a.jsx("div",{className:fy.Title,children:n}),i&&a.jsx("div",{className:fy.Description,children:i})]}),r&&a.jsx("div",{className:Ui(fy.Actions,c),ref:h,children:r})]})]})},l0t=({color:e})=>{switch(e){case"warning":case"caution":case"danger":return a.jsx(gPe,{});case"success":return a.jsx(dPe,{});default:return a.jsx(hPe,{})}};function Bd({title:e,description:t,error:n,confirmLabel:i,cancelLabel:r,closeLabel:s,variant:o="warning",busy:l=!1,confirmDisabled:c=!1,onCancel:u,onConfirm:d}){const{t:f}=_e("shell"),h=r??f("confirm.cancel"),m=s??f("confirm.close"),g=p.useId(),b=p.useId(),v=p.useRef(null),y=p.useRef(l),w=p.useRef(u);return p.useEffect(()=>{y.current=l,w.current=u},[l,u]),p.useEffect(()=>{var S;const x=document.body.style.overflow,k=document.activeElement instanceof HTMLElement?document.activeElement:null;document.body.style.overflow="hidden",(S=v.current)==null||S.focus();const O=A=>{A.key==="Escape"&&!y.current&&w.current()};return window.addEventListener("keydown",O),()=>{document.body.style.overflow=x,window.removeEventListener("keydown",O),k!=null&&k.isConnected&&k.focus()}},[]),bi.createPortal(a.jsx("div",{className:"studio-confirm-backdrop",onMouseDown:x=>{x.target===x.currentTarget&&!l&&u()},children:a.jsxs("section",{className:`studio-confirm-dialog studio-confirm-dialog--${o}`,role:"alertdialog","aria-modal":"true","aria-labelledby":g,"aria-describedby":b,"aria-busy":l||void 0,children:[a.jsxs("header",{className:"studio-confirm-head",children:[a.jsxs("div",{className:"studio-confirm-title-wrap",children:[a.jsx("span",{className:"studio-confirm-title-icon","aria-hidden":"true",children:a.jsx(gPe,{})}),a.jsx("h2",{id:g,children:e})]}),a.jsx(Tt,{type:"button",className:"studio-confirm-close",color:"secondary",variant:"ghost",size:"lg",uniform:!0,pill:!1,onClick:u,disabled:l,"aria-label":m,children:a.jsx(RV,{})})]}),a.jsxs("div",{className:"studio-confirm-body",children:[a.jsx("div",{id:b,children:t}),n?a.jsx(Eh,{className:"studio-confirm-error",color:"danger",variant:"soft",description:n}):null]}),a.jsxs("footer",{className:"studio-confirm-actions",children:[a.jsx(Tt,{ref:v,type:"button",color:"secondary",variant:"ghost",size:"lg",pill:!1,onClick:u,disabled:l,children:h}),a.jsx(Tt,{type:"button",className:"studio-confirm-primary",color:o==="danger"?"danger":"primary",size:"lg",pill:!1,loading:l,onClick:d,disabled:l||c,children:i})]})]})}),document.body)}const c0t="_Container_1a6nz_1",u0t="_Input_1a6nz_229",ute={Container:c0t,Input:u0t},Ts=e=>{const t=p.useRef(null),i=`search-ui-input-${p.useId()}`,{id:r,name:s,type:o="text",variant:l="outline",size:c="md",gutterSize:u,className:d,autoComplete:f,disabled:h=!1,readOnly:m=!1,invalid:g=!1,allowAutofillExtensions:b=o==="password"||!!s||!!f&&f!=="off",onFocus:v,onBlur:y,onAnimationStart:w,onAutofill:x,autoSelect:k,startAdornment:O,endAdornment:S,pill:A,opticallyAlign:E,ref:j,...T}=e,R=I=>{const P=t.current;if(!I.target||!(I.target instanceof Element)||!P||P.contains(I.target)||I.target.closest("button, [type='button'], [role='button'], [role='menuitem']"))return;I.preventDefault(),document.activeElement!==P&&P.focus();const{left:M,top:_}=P.getBoundingClientRect(),{clientX:F,clientY:L}=I,H=L<_||F{var I;k&&((I=t.current)==null||I.select())},[k]);const D=I=>{w==null||w(I),I.animationName==="native-autofill-in"&&(x==null||x())};return a.jsxs("div",{className:Ui(ute.Container,d),"data-variant":l,"data-size":c,"data-gutter-size":u,"data-focused":C,"data-disabled":h?"":void 0,"data-readonly":m?"":void 0,"data-invalid":g?"":void 0,"data-pill":A?"":void 0,"data-optically-align":E,"data-has-start-adornment":O?"":void 0,"data-has-end-adornment":S?"":void 0,onMouseDown:R,children:[O,a.jsx("input",{...T,ref:dT([j,t]),id:r||(b?void 0:i),className:ute.Input,type:o,name:s,autoComplete:f,readOnly:m,disabled:h,onFocus:I=>{N(!0),v==null||v(I)},onBlur:I=>{N(!1),y==null||y(I)},onAnimationStart:D,"data-lpignore":b?void 0:!0,"data-1p-ignore":b?void 0:!0}),S]})},d0t="_SelectControl_1tyi7_1",f0t="_Clear_1tyi7_436",h0t="_DropdownIcon_1tyi7_437",p0t="_TriggerText_1tyi7_468",m0t="_IndicatorWrapper_1tyi7_476",g0t="_StartIcon_1tyi7_482",b0t="_DropdownIconChevron_1tyi7_534",y0t="_LoadingIndicator_1tyi7_537",wp={SelectControl:d0t,Clear:f0t,DropdownIcon:h0t,TriggerText:p0t,IndicatorWrapper:m0t,StartIcon:g0t,DropdownIconChevron:b0t,LoadingIndicator:y0t},v0t=({ref:e,onPointerDown:t,onKeyDown:n,onPointerEnter:i,onInteract:r,invalid:s,disabled:o,children:l,className:c,variant:u="outline",size:d="md",block:f,opticallyAlign:h,pill:m=!0,loading:g,onClearClick:b,selected:v=!1,StartIcon:y,dropdownIconType:w="dropdown",...x})=>{const k=p.useRef(null),S=!!b&&v&&!g&&!o,A=w&&w!=="none"&&!g,E=S||g||A,j=!g&&!o,T=C=>{var N;switch(C.key){case"ArrowDown":case"ArrowUp":case" ":C.stopPropagation(),C.preventDefault(),r?r():(N=k.current)==null||N.dispatchEvent(new PointerEvent("pointerdown",{bubbles:!0,cancelable:!0,pointerType:"mouse"}));break;case"Enter":break;default:n==null||n(C)}},R=C=>{var N;C.button!==2&&(C.stopPropagation(),r?(C.preventDefault(),r()):(t==null||t(C),(N=x.onClick)==null||N.call(x,C)))};return a.jsxs("span",{ref:dT([k,e]),className:Ui(wp.SelectControl,c),role:"button",tabIndex:o?-1:0,onPointerEnter:C=>{UV(C),i==null||i(C)},onPointerDown:j?R:void 0,onKeyDown:j?T:void 0,"data-variant":u,"data-block":f?"":void 0,"data-pill":m?"":void 0,"data-size":d,"data-optically-align":h,"aria-busy":g?"true":void 0,"data-selected":v,"data-loading":g?"":void 0,"data-invalid":s?"":void 0,"data-disabled":o?"":void 0,"aria-disabled":o,...x,onClick:void 0,children:[y&&a.jsx(y,{className:wp.StartIcon}),a.jsx("span",{className:wp.TriggerText,children:l}),E&&a.jsxs("div",{className:wp.IndicatorWrapper,children:[S&&a.jsx(Tt,{"aria-label":"Clear current value",className:wp.Clear,onPointerDown:C=>{C.stopPropagation()},onClick:C=>{C.stopPropagation(),C.preventDefault(),b()},color:"secondary",variant:A?"ghost":"solid",size:"3xs",uniform:!0,pill:m,"data-only-child":A?void 0:"",children:a.jsx(RV,{})}),g&&a.jsx(rT,{className:wp.LoadingIndicator}),A&&a.jsx(x0t,{iconType:w})]})]})},x0t=({iconType:e})=>e==="chevronDown"?a.jsx(Bct,{className:Ui(wp.DropdownIcon,wp.DropdownIconChevron)}):a.jsx(qct,{className:wp.DropdownIcon}),w0t="_Menu_n4tw6_3",k0t="_MenuList_n4tw6_5",S0t="_MenuInner_n4tw6_50",O0t="_OptionsList_n4tw6_64",E0t="_Option_n4tw6_64",C0t="_PressableInner_n4tw6_111",A0t="_OptionInner_n4tw6_113",T0t="_OptionCheck_n4tw6_118",_0t="_OptionIndicatorSlot_n4tw6_123",j0t="_OptionGroupHeading_n4tw6_128",N0t="_OptionHardLimitHeading_n4tw6_140",R0t="_OptionsLimit_n4tw6_147",I0t="_Action_n4tw6_152",P0t="_ActionInner_n4tw6_218",D0t="_ActionsContainer_n4tw6_224",M0t="_Search_n4tw6_244",L0t="_SearchEmpty_n4tw6_247",ms={Menu:w0t,MenuList:k0t,MenuInner:S0t,OptionsList:O0t,Option:E0t,PressableInner:C0t,OptionInner:A0t,OptionCheck:T0t,OptionIndicatorSlot:_0t,OptionGroupHeading:j0t,OptionHardLimitHeading:N0t,OptionsLimit:R0t,Action:I0t,ActionInner:P0t,ActionsContainer:D0t,Search:M0t,SearchEmpty:L0t},jLe=p.createContext(null),Bb=()=>{const e=p.use(jLe);if(!e)throw new Error("Select components must be wrapped in